这篇文章,我们继续利用 requests 和 xpath 爬取豆瓣电影的短评,下面还是先贴上效果图:
1、网页分析
(1)翻页
我们还是使用 Chrome 浏览器打开豆瓣电影中某一部电影的评论进行分析,这里示例为
和之前一样,我们可以通过构造 URL 获取全部网页的内容,但是这次我们尝试使用一种新的方法 —— 翻页
使用快捷键 Ctrl+Shift+I 打开开发者工具,然后使用快捷键 Ctrl+Shift+C 打开元素选择工具
此时用鼠标点击网页中的 后页,就会在源代码中自动定位到相应的位置
接下来我们用 xpath 匹配下一页的链接地址:
html.xpath('//div[@id="paginator"]/a[@class="next"]/@href')
这样一来,我们只要在每一页中通过循环不断获取下一页的内容即可
核心代码如下:
# 获取网页源代码
def get_page(url):
# 构造请求头部
headers = {
'USER-AGENT':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
# 发送请求,获得响应
response = requests.get(url=url,headers=headers)
# 获得网页源代码
html = response.text
# 返回网页源代码
return html
# 解析网页源代码,获取下一页链接
def parse4link(html,base_url):
# 初始化返回结果
link = None
# 构造 _Element 对象
html_elem = etree.HTML(html)
# 匹配下一页的链接地址,注意,它是一个相对地址
url = html_elem.xpath('//div[@id="paginator"]/a[@class="next"]/@href')
# 若匹配成功,则将匹配结果与初始 URL 拼接,构成完整的链接地址
if url:
link = base_url + url[0]
return link
(2)分析网页内容
这一次我们需要的数据包括(这里还是使用 xpath 进行匹配):赞同人数://div[@class="comment-item"]/div[2]/h3/span[1]/span/text()
评论者://div[@class="comment-item"]/div[2]/h3/span[2]/