利用splash爬取京东商品信息
一、环境
window7
python3.5
pycharm
scrapy
scrapy-splash
MySQL
二、简介
为了体验scrapy-splash 的动态网页渲染效果,特地编写了利用splash爬取京东商品信息的爬虫,当然站在爬取效率和稳定性方面来说,动态网页爬取首先应该考虑的还是动态页面逆向分析。
三、环境搭建
这里只介绍splash在window7上的搭建方法:
Splash是一个利用webkit或者基于webkit库 Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。官方文档解释是必须使用Docker容器!之所以用容器技术,好处是你可以一坨的安装好splash,而不必一点一点的去为安装splash填坑。
在网上的教程中,大多数是建议利用linux来安装docker,原因如下图:
docker使用go语言开发,并且运行在linux系统下,而如果想用window运行,只能在window基础上先运行一个linux虚拟机,然后再在这个linux虚拟机下运行docker。
由于我使用的是window7系统,只能到官网(https://docs.docker.com/toolbox/toolbox_install_windows/)下载DockerToolbox,下载完成后,双击安装(安装过程自行百度);
安装完成后会有三个快捷键:
点击启动Docker Quickstart Terminal
输入安装splash的命令:$docker pull scrapinghub/splash
运行命令:$docker run -p 8050:8050 -p 5023:5023 scrapinghub/splash ,开启8050连接端口和5023监控端口或者只开启8050端口。
最后在scrapy项目中安装scrapy-splash组件,在settings.py中添加#用来支持cache_args(可选),splash设置
SPIDER_MIDDLEWARES = {
#'e_commerce.middlewares.ECommerceSpiderMiddleware': 543,
'scrapy_splash.SplashDeduplicateArgsMiddleware' : 100 ,
}
DOWNLOADER_MIDDLEWARES = {
#'e_commerce.middlewares.ECommerceDow