基于Scrapy框架的豆瓣影评及评分爬取

一、创建爬虫项目,明确爬取信息

1.1创建Scrapy项目nz_comments

1.1.1使用交互行创建Scrapy项目

爬虫项目在Pycharm的工作目录下创建。首先复制Pycharm的工作目录。
①命令行 cd C:\Users\Administrator\PycharmProjects
②命令行 scrapy startproject nz_comments
成功创建爬虫项目nz_comments.

1.1.2Pycharm打开项目nz_comments
在这里插入图片描述

该项目中,有Scrapy框架的各个核心组件——爬虫spider,项目管道pipelines,中间件middlewares等。

1.2查看豆瓣影评网站,明确爬取信息
1.2.1登录豆瓣影评网站
《哪吒之魔童降世》短评网站:
https://movie.douban.com/subject/26794435/comments?status=P
在这里插入图片描述

1.2.2浏览网页观察重要信息
本项目最终的目的是通过评论词来预测评分,因此要爬取的信息只有两个——评分及评论。
在这里插入图片描述

二、编写爬虫程序,实现信息爬取
2.1 编写爬虫程序前的预备
2.1.1 如何爬取多页
我们把网站拉到最下面,点击“后页>”。
在这里插入图片描述

得到下一页网站界面 =>
在这里插入图片描述

通过观察网站结构,发现规律。
https://movie.douban.com/subject/26794435/comments?start=20&limit=20&status=P&sort=new_score

咱们对比一下第一页,第二页和第三页。
第一页:
https://movie.douban.com/subject/26794435/comments?status=P
第二页:
https://movie.douban.com/subject/26794435/comments?start=20&limit=20&status=P&sort=new_score
第三页:
https://movie.douban.com/subject/26794435/comments?start=40&limit=20&status=P&sort=new_score

可以看的出来,从第二页开始,改变的只是start里面的值,第二页是201,第三页是202,那么第n页就是20*n.
我们通过这个规则爬取多页。

2.1.2 如何获取评分和评论的HTML标签位置
回到第一页。按F12,打开“开发者工具”。
在这里插入图片描述

随后把鼠标移动到评分栏,点击。
在这里插入图片描述

可以看到,评分在<span class=”allstar40 rating” title=”推荐”>这一栏。豆瓣的评分不是直接打分,这里的四分对应“推荐”,如果是五分对应“力荐”。先爬下来,后期我们把信息处理成数值型。
在这一栏,右键复制Xpath。
在这里插入图片描述

得到评分Xpath:
/html/body/div[3]/div[1]/div/div[1]/div[4]/div[1]/div[2]/h3/span[2]/span[2]
同理,得到评论Xpath:
/html/body/div[3]/div[1]/div/div[1]/div[4]/div[1]/div[2]/p/span

2.1.3 如何把各个用户当成一个整体爬取数据
这里涉及到Xpath方法里的选择器,我们需要在服务器响应的HTML文档上先获取所有用户的Xpath,再遍历每个用户,获取每个用户的评分和评论。
同样是通过上面的方法,不过要把鼠标移到整个用户块。
在这里插入图片描述

一个用户对应一个


在这里插入图片描述

可以看到第一页的全部20个用户的评论信息,都并列存放在此。那么我们的选择器列要包括全部的用户div,就找到它们的父节点。
在这里插入图片描述

也就是


我们想找到它的Xpath,可以通过子节点往上找一个节点。
我们看看第一个用户的Xpath:
在这里插入图片描述

得到: /html/body/div[3]/div[1]/div/div[1]/div[4]/div[1]
也就是说,父节点Xpath为:/html/body/div[3]/div[1]/div/div[1]/div[4]

那么选择器列为 /html/body/div[3]/div[1]/div/div[1]/div[4]/div
这样选择器列就包含了所有的用户,遍历即可。

但有一个坑,就是,往下翻,有两个同级div不是用户信息。
在这里插入图片描述

显然下面两个不是我们所需要的,那么选择器最后写div肯定是不行,修改一下为:
/html/body/div[3]/div[1]/div/div[1]/div[4]/div[@class=”comment-item ”]
这个要仔细看,会发现comment-item后面还有一个空格。

2.2 编写爬虫程序
2.2.1 伪装浏览器为用户
在settings.py文件里,把注释掉的USER_AGENT赋值为浏览器名。
获取浏览器名的方法为:
①点击“开发者工具”里的“网络”,英文对应“Network”。并点击“重新载入”。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值