爬取某瓣上电影《唐人街探案3》的评论

爬虫爬取评论数据

1、《唐人街探案3》评论的url:https://movie.douban.com/subject/27619748/comments?start=20&limit=20&status=P&sort=new_score
其中:
①、27619748:该电影的ID;
②、start=20:评论区页面第一页为20,第二页为40,以此类推;
③、limit=20:评论区每页包含二十条评论;

2、获取本地为用户代理User-Agent(简称UA)的方法,使用本地用户代理的目的是为了将本地程序伪装成浏览器,从而达到反“反爬虫”的目的:
①在浏览器中输入:about://version,回车,如下图所示:
在这里插入图片描述
②、在浏览器上新建一个空的百度搜索界面,按F12键,进入开发者界面,进入“Network”栏,在左侧百度搜索界面单击“百度搜索”按键,右侧”name“栏选择”www.baidu.com“,然后进入”headers“栏,找到User-Agent,详细如下图所示:
在这里插入图片描述
③、本地的User-Agent为:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36

3、使用Xpath解析HTML
想获得评论信息,就需要解析HTML,我们这里用XML文档查询语言Xpath,XPath语法有三大类:
①层级:/ 子节点、// 跳级;
②属性:@ 属性访问;
③函数:contains()、text()等;

语法:选取节点
在这里插入图片描述
语法:选取未知节点
在这里插入图片描述
详细资料参考:XPath入门(含动图解析)

4、评论地址查询:
在该电影短评界面按F12键,进入开发者界面,按照3及下图的步骤找到评论://div[@id=“comments”]//div[@class=“comment”]//p//text()
在这里插入图片描述
5、实现以上过程的代码如下:

import requests
from lxml import etree

header = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'
}
data_path=r'D:\pycharm\comment.txt'
base_url='https://movie.douban.com/subject/27619748/comments?start={}&limit=20&status=P&sort=new_score'

fp=open(data_path,'w',encoding='utf-8')

for i in range(10):
    page=i*20
    url=base_url.format(page)
    response=requests.get(url, headers=header)
    comment_path = '//div[@id="comments"]//div[@class="comment"]//p//text()'
    root = etree.HTML(response.text)
    comment_list = root.xpath(comment_path)

    for comment in comment_list:
        comment=comment.strip('\n')
        #strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
        if not comment.isspace():
            #str.isspace()函数:检测字符串是否只包含空格,是则返回 True,否则返回 False。
            comment = comment + '\n'  #'\n':换行分隔符
            fp.write(comment)
            
fp.close()

结果如下
在这里插入图片描述
噫,观众普遍不买账嘛

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值