1303140304 发表于 2020-4-10 13:14:03

跟着零基础学习python第二版爬电影250遇到了问题,求解答!

import requests
import bs4

r = requests.get('http://www.imdb.cn/IMDB250/')
soup = bs4.BeautifulSoup(r.text,"html.parser")
targets = soup.find_all('div',class_='ss-3 clear')
for each in targets:
    print(each.a.p.text)

因为豆瓣网爬不到了,获取网页然后.text是一个空列表,我就去爬了IMDB电影top250,跟着书上得步骤一步一步写出了如上得代码,但是问题出现了!无论如何,这段代码只能爬到第一部电影《肖申克得救赎》。我思考了很久尝试了很多次,发现target是一个列表,但是只有一个元素,虽然包含了整个网页得所有文本,但是一个元素不能迭代出每部电影得名字,是不是soup.find_all没用好啊,有没有爬电影250成功了得同学解救一下我啊……

qiuyouzhi 发表于 2020-4-10 13:26:19

爬豆瓣的时候,你是不是没有加headers?
加上试试

suchocolate 发表于 2020-4-10 13:27:25

本帖最后由 suchocolate 于 2020-4-10 13:28 编辑

headers = {'user-agent': 'firefox'}
r = requests.get('http://www.imdb.cn/IMDB250/',headers=headers)
requests包默认headers的user-agent是python-requests,一般会被网站反扒,自己设置一个其他的,就不会被反扒了。

疾风怪盗 发表于 2020-4-10 13:33:08

targets = soup.find_all('p',class_='bb')
这个就是每个电影的名字,你是要这个么

1303140304 发表于 2020-4-10 13:39:58

疾风怪盗 发表于 2020-4-10 13:33
targets = soup.find_all('p',class_='bb')
这个就是每个电影的名字,你是要这个么

成了!就是这样!原来可以直接查找子类啊,太厉害了!

1303140304 发表于 2020-4-10 13:44:44

qiuyouzhi 发表于 2020-4-10 13:26
爬豆瓣的时候,你是不是没有加headers?
加上试试

我等会试试

1303140304 发表于 2020-4-10 13:45:42

suchocolate 发表于 2020-4-10 13:27
headers = {'user-agent': 'firefox'}
r = requests.get('http://www.imdb.cn/IMDB250/',headers=headers) ...

刚看了爬虫隐藏得视频了,我等会试试爬豆瓣
页: [1]
查看完整版本: 跟着零基础学习python第二版爬电影250遇到了问题,求解答!