环境配置
- Ubuntu 16.04
- Python 3.5
技术框架
- Scrapy
需求目标
本项目为汽车口碑分析,第一步需要爬取对于不同车型的评论数据。
选择58车的车型分类爬取评论数据。
爬取流程
先获取每个车型的链接,以下图中红框内的车型为例
打开链接后,抓取下图红框中的总评分,写入文件中。
写入总评分后,通过拼接链接进入该车型的用户评论页面。
通过第一步中获取的链接拼接上
list_s1_p1.html
,组成用户评论页面的链接。【注】此为第一页的链接,若还有下一页,下述步骤会提及处理方法。
抓取评论页面中的各种数据,如
id
,评分
,评论
等。若该评论页面还有
下一页
,则继续抓取下一页中的评论数据。【方法】
判断页面中是否有
下一页
元素,若有则回调解析评论页面的方法。将爬取的数据保存到文件中。
详细步骤
创建新工程
先创建工程目录
cd /home/t/dataset/
mkdir carSpider
创建新工程
scrapy startproject carSpider
编辑items.py
文件
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html
import scrapy
class CarspiderItem(scrapy.Item):
file=scrapy.Field() #文件名
car=scrapy.Field() #车型
score=scrapy.Field() #总评分
u_id=scrapy.Field() #用户ID
u_score=scrapy.Field() #用户评分
u_merit=scrapy.Field() #用户评论优点
u_demerit=scrapy.Field() #用户评论缺点
u_summary=scrapy.Field() #用户评论综述
u_flower=scrapy.Field() #用户评论鲜花数
u_brick=scrapy.Field() #用户评论板砖数
编写carSpider.py
文件
import scrapy
from carSpider.items import CarspiderItem
baseDir = '/home/t/dataset/carRemark/'
startUrl='http://www.58che.com/brand.html'
class CarSpider(scrapy.Spider):
name='spider' #爬虫名
def __init__(self):
self.start_urls=[startUrl]
#第一层解析方法
def parse(self,response):
#定位到车型元素
subclasses=response.css('body > div.fltop > div.marcenter > div > div > div.r > ul > li > dl > dt > a')
for subclass in subclasses:
subclass_name=subclass.xpath('text()').extract_first() #获取车型名称文本
subclass_link=subclass.xpath('@href').extract_first() #获取车型链接
yield scrapy.Request(url=subclass_link,callback=self.parse_car_subclass,meta={
'file':subclass_name}) #回调下一层解析方法,并把车型名称传递给该方法作为文件名
#第二层解析方法
def parse_car_subclass(self,response):
infos=response.css('#line1 > div.cars_line2.l > div.dianpings > div.d_div1.clearfix > font') #定位到总评分元素
for info