抓取易车车型配置小记

因为易车网车型配置信息为动态加载,导致之前用于抓取参数的python脚本失效,根据原脚本结合scrapy和splash来进行参数采集

splash:用于需要js动态加载的页面,渲染动态js 先启动splash,官方提供有现成镜像,可以直接拿来使用

docker run -d --name=splash --restart=always -p 8050:8050 scrapinghub/splash:latest

然后新建一个scrapy项目

scrapy startproject yiche
cd yiche

修改scrapy的配置

vi yiche/setting
BOT_NAME = 'yiche'
SPIDER_MODULES = ['yiche.spiders']
NEWSPIDER_MODULE = 'yiche.spiders'
ROBOTSTXT_OBEY = False	# 是否遵守robot.txt
DOWNLOAD_DELAY = 1	# 抓取速度,防止被服务器封禁,适当降低抓取速度

##### splash 配置 开始#####
SPIDER_MIDDLEWARES = {
   'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
DOWNLOADER_MIDDLEWARES = {
	'scrapy_splash.SplashCookiesMiddleware': 723,
	'scrapy_splash.SplashMiddleware': 725,
	'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0
HTTPCACHE_DIR = 'httpcache'
SPLASH_URL = 'http://localhost:8050/'  # splash地址,我直接在本机运行的容器,所以地址为localhost
DUPEFILTER_CLASS = "scrapy_splash.SplashAwareDupeFilter"
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'
##### splash 配置 结束#####

大体思路 1、主爬虫脚本内容,抓取页面用的是车型对面页面渲染的配置列表,http://car.yiche.com/aodia3-3999/m126313/peizhi/ 2、通过mondb中的bitauto_series和bitauto_vehicle表分别取出车型拼音和车型id用于url拼接 3、将html页面转为lxml页面, 4、按分类替换不同分类的标签为表格标签,每次取一个分类,按行获取相应的参数值 5、使用replace替换页面中的空格、换行等无用信息,方便过滤内容 6、通过大标题,例如“基本信息,车身尺寸,娱乐配置”等分类将所有配置分为参数和配置两大类并根据id更新到mongodb中

最后更新于