豆瓣电影排名网址:https://movie.douban.com/top250?start=0&filter=
在进去豆瓣电影排名后,打开浏览器的检查功能分析爬取页面源代码,在写请求代码之前,首先我们得找出网页的请求头部。
请求头部中的’User-Agent’,是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本,浏览器版本等信息。在做爬虫时加上该信息,可以伪装为浏览器,不加则会被认出为爬虫的风险。
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:58.0) Gecko/20100101 Firefox/58.0'}
接下来,对网页Elements代码进行分析,在未知爬取信息所在的时候,先用鼠标在body上下滑动,在所要爬取信息部分有阴影的时候停下。效果如下:
像上一步那样,不断滑动鼠标,最后可以找到所要爬取信息的位置在ol节点中,一般的电影排名或歌曲排名信息都会在ol或ul节点上。
在本次爬虫中,我们只要爬取电影排名中的排名、电影名字、参与人员、评分、评价人数、和评价等信息,所要先找出它们所在的节点,在用CSS选择器选取节点
#利用CSS选择器调用select函数获取排名节点
nums=soup.select('em')
#利用CSS选择器调用find_all函数获取电影名字节点
titles=soup.find_all('div',class_='hd')
#获取电影导演和演员节点
actors=soup.find_all('p',class_='')
#获取链接节点
links=soup.select('ol li div a')
#获取评分节点
rating_nums=soup.find_all('span',class_='rating_num')
#获取评价人数节点
evaluate_numbers=soup.find_all('div',class_='star')
#获取评价节点
evaluates=soup.find_all('span',class_='inq')
上面我们只是选取了信息所在的节点,并没有对提取里面的文本信息,接下来对节点里面的信息进行清洗。
- 排行信息
'排行':num.get_text(),
- 电影名字信息(在源代码中我们可以看到,一部电影不止一个名字,在这里,我们只选取他的中文名字)
'电影名字':title.get_text().split