环境配置
- Ubuntu 16.04
- Python 3.5
技术框架
- Scrapy
需求目标
本项目为汽车口碑分析,第一步需要爬取对于不同车型的评论数据。
选择58车的车型分类爬取评论数据。
爬取流程
先获取每个车型的链接,以下图中红框内的车型为例

打开链接后,抓取下图红框中的总评分,写入文件中。

写入总评分后,通过拼接链接进入该车型的用户评论页面。
通过第一步中获取的链接拼接上
list_s1_p1.html,组成用户评论页面的链接。【注】此为第一页的链接,若还有下一页,下述步骤会提及处理方法。

抓取评论页面中的各种数据,如
id,评分,评论等。
若该评论页面还有
下一页,则继续抓取下一页中的评论数据。【方法】
判断页面中是否有
下一页元素,若有则回调解析评论页面的方法。将爬取的数据保存到文件中。
详细步骤
创建新工程
先创建工程目录
cd /home/t/dataset/ |
创建新工程
scrapy startproject carSpider |
编辑items.py文件
# -*- coding: utf-8 -*- |
编写carSpider.py文件
import scrapy |
【解析】
#定位到用户评论元素 |
此句代码定位的元素如下图所示,定位到的是评论页面每条评论的元素整体。

for info in infos: |
uid定位到的元素如下图所示,

score定位到的元素如下图所示,获取score元素的style属性,值形如width:80%,需要通过getScore()方法转换为五分制分数。

try: |
先定位是否有优点元素,如下图红框所示,若有该元素,则获取优点元素的下一个兄弟节点内容,如下图蓝框所示,若无则为空。

#获取`下一页`元素,若有则回调`parse_remark`第三层解析方法,即继续获取下一页用户评论数据 |
解析完上述内容,判断用户评论页面是否有分页,定位是否有下一页元素,如下图红框所示,若有则获取该元素链接,如下图橙框所示。
获取之后,回调parse_remark方法解析下一页的评论页面。

编辑pipelines.py文件
# -*- coding: utf-8 -*- |
编辑settings.py文件
# -*- coding: utf-8 -*- |
【解析】
ROBOTSTXT_OBEY = False |
将原来的True改为False。
ITEM_PIPELINES = { |
将原来的注释去掉,即注册pipelines,否则无法使用该pipelines。
运行爬虫
在项目根目录下新建文件entrypoint.py

from scrapy.cmdline import execute |