定位节点及网页翻页分析
获取到网站的信息之后,有些信息是融合在一起的,而在数据分析时,通常需要将某些具有使用价值的信息提取出来,并存储至数组、列表或数据库中
两种常见的方法:
(1) 文本分析。从获取的电影简介文本信息中提取某些特定的值,通常采用字符串处理方法进行提取
(2) 节点定位。在写爬虫过程中定位相关节点,然后进行爬取所需节点操作,最后赋值给变量或存储到数据库中
仍然以豆瓣电影Top250为例,结合BeautifulSoup技术,采用节点定位方法获取具体的值。点开HTML网页,检查对应的< li >< /li >节点,可以看到该电影的构成情况,再定位节点内容,如< span class=“title” >节点可以获取标题,< div class=“star” >节点可以获取电影评分和评价人数
获取节点的核心代码
定位class属性为“item”的div布局后,再调用find_all()函数查找class属性为title的标签,并获取第一个值输出,即title[0]。接着调用find()函数爬取评分信息,通过get_text()函数获取内容
for tag in soup.find_all(attrs={"class":"item"}):
title = tag.find_all(attrs={"class":"title"}) #电影名称
info = tag.find(attrs={"class":"star"}).get_text() #爬取评分和评论数
print(title[0])
print(info.replace('\n',''))
# <span class="title">肖申克的救赎</span>
# 9.72279813人评价
第一页的25部电影信息就爬取成功了,而该网页共10页,每页显示25部电影,想要获取这250部完整的电影信息呢,就涉及到链接跳转和网站的翻页分析。网站的翻页分析通常有四种方法
(1)点击下一页分析url网址,分析它们之间的规律,这种方法的网站通常采用GET方法进行传值,而有的网站采用局部刷新技术,翻页后的url仍然不变。
(2)获取“下一页”或页码的超链接,再依次调用urllib2.urlopen(url)函数访问URL并实现网页跳转。
(3)分析网站Networks提交请求的参数,通过Python设置参数实现翻页,常用于POST表单。
(4)采用网页自动操作技术,获取下一页按钮或超链接进行自动点击跳转,如selenium技术中的鼠标点击事件
今天采用第一种分析方法
在点击网页中的翻页按钮时,可以看到网址的变化
第2页URL:https://movie.douban.com/top250?start=25&filter=
第3页URL:https://movie.douban.com/top250?start=50&filter=
第10页URL:https://movie.douban.com/top250?start=225&filter=
top250?start=25表示获取第2页(序号为26到50号)的电影信息;top250?start=50表示获取第3页(序号为51到75号)的电影信息,依次类推,我们写一个循环即可获取完整的250部电影信息
i = 0
while i<10:
num = i*25 #每次显示25部 URL序号按25增加
url = 'https://movie.douban.com/top250?start=' + str(num) + '&filter='
crawl(url)
i = i + 1
当i初始值为0,num值为0,获取第1页信息;当i增加为1,num值为25,获取第2页信息;当i增加为9,num值为225,获取第10页的信息