一、创建爬虫项目,明确爬取信息
1.1创建Scrapy项目nz_comments
1.1.1使用交互行创建Scrapy项目
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,就找到它们的父节点。
也就是
得到: /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”。并点击“重新载入”。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- howto234.com 版权所有 湘ICP备2022005869号-3
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务