利用scrapy-splash爬取JS生成的动态页面
目前,为了加速页面的加载速度,页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy没有JS engine,所以爬取的都是静态页面,对于JS生成的动态页面都无法获得。
解决方案:
利用第三方中间件来提供JS渲染服务: scrapy-splash 等。
利用webkit或者基于webkit库
Splash是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。Twisted(QT)用来让服务具有异步处理能力,以发挥webkit的并发能力。
下面就来讲一下如何使用scrapy-splash:
1、利用pip安装scrapy-splash库:
$ pip install scrapy-splash
2、scrapy-splash使用的是Splash HTTP API, 所以需要一个splash instance,一般采用docker运行splash,所以需要安装docker。
3、安装docker, 安装好后运行docker。
4、拉取镜像(pull the image):
$ docker pull scrapinghub/splash
5、用docker运行scrapinghub/splash:
$ docker run -p 8050:8050 scrapinghub/splash
6、配置splash服务(以下操作全部在settings.py):
1)添加splash服务器地址:
SPLASH_URL = 'http://localhost:8050'
2)将splash middleware添加到DOWNLOADER_MIDDLEWARE中:
DOWNLOADER_MIDDLEWARES = {
'scrapy_splash.SplashCookiesMiddleware': 723,
'scrapy_splash.SplashMiddleware': 725,
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
3)Enable SplashDeduplicateArgsMiddleware:
SPIDER_MIDDLEWARES = {
'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
4)Set a custom DUPEFILTER_CLASS:
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
5)a custom cache storage backend:
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'
7、例子
获取HTML内容:
import scrapy
from scrapy_splash import SplashRequestclass MySpider(scrapy.Spider):start_urls = ["http://example.com", "http://example.com/foo"]def start_requests(self):for url in self.start_urls:yield SplashRequest(url, self.parse, args={'wait': 0.5})def parse(self, response):# response.body is a result of render.html call; it# contains HTML processed by a browser.# ...
转载自:http://www.cnblogs.com/zhonghuasong/p/5976003.html
利用scrapy-splash爬取JS生成的动态页面相关推荐
- python爬虫利用Scrapy框架爬取汽车之家奔驰图片--实战
先看一下利用scrapy框架爬取汽车之家奔驰A级的效果图 1)进入cmd命令模式下,进入想要存取爬虫代码的文件,我这里是进入e盘下的python_spider文件夹内 C:\Users\15538&g ...
- 利用Scrapy框架爬取LOL皮肤站高清壁纸
利用Scrapy框架爬取LOL皮肤站高清壁纸 Lan 2020-03-06 21:22 81 人阅读 0 条评论 成品打包:点击进入 代码: 爬虫文件 # -*- coding: utf- ...
- 利用Scrapy框架爬取前途无忧招聘信息
利用Scrapy框架爬取前途无忧招聘信息 关于安装和命令使用可参考:https://docs.scrapy.org/en/1.7/intro/install.html 先创建项目和爬虫文件 分析网站 ...
- 利用Scrapy框架爬取汽车之家图片(详细)
爬取结果 爬取步骤 创建爬虫文件 进入cmd命令模式下,进入想要存取爬虫代码的文件,我这里是进入e盘下的E:\pystudy\scraping文件夹内 C:\Users\wei>E:E:\> ...
- python笔记之利用scrapy框架爬取糗事百科首页段子
环境准备: scrapy框架(可以安装anaconda一个python的发行版本,有很多库) cmd命令窗口 教程: 创建爬虫项目 scrapy startproject qq #创建了一个爬虫项目q ...
- 利用Scrapy框架爬取落网上的音乐文件
今天爬取的是本人特别喜欢的一个音乐网站,www.luoo.net, 首先是设置item中需要保存的字段. items.py 字段名称包括期刊号,期刊名,期刊创建时间,单期期刊下的音乐名,作者名,音乐文 ...
- 利用scrapy框架爬取动态加载的数据
在爬取有些网站的是后,数据不一定全部是可视化界面的,当我们拖动滚动条时才会加载其他的数据,如果我们也想爬取这部分数据,就需要使用selenium模块,在scrapy里可以结合该模块修改返回对象 一.编 ...
- 利用scrapy简单爬取新片场前20页视频数据,并存入mysql数据库
1.创建Scrapy项目 scrapy startproject XPC 2.进入项目目录,使用命令genspider创建Spider(注意后面允许爬取的域要增加) scrapy genspider ...
- scrapy配合selenium爬取需要反复操作同一个动态页面的方法,解决点击“下一页”但是URL相同的网站
首先这种网站一定要设置爬取的速率,目标网站用这种方式写入网页估计是被爬虫搞怕了,大概率有更简单的反爬方法,因此爬取速率要注意.博主要爬的网站是一个电影网站:艺恩,点击下一页可以看到其实执行了一个js拿 ...
最新文章
- SpringBoot介绍
- python读取文件中的数据为二维数组变量_Numpy 多维数据数组的实现
- Oracle递归操作
- 8个适合用来练手的SpringBoot开源项目
- android自动化测试之robotium初探(三),Android自动化测试之Robotium--基础操作.pdf
- linux内核实现ipsec,IP XFRM配置示例:利用linux kernel自带的IPSec实现,手动配置IPSec...
- mac 更换brew镜像源
- Going Deeper in Spiking Neural Networks: VGG and Residual Architectures
- SDL附着window窗口的方法
- voices——最后的决赛
- Python帮助文档
- 在Ubuntu 将PHP5升级到PHP7.0 PHP7.1
- python安装不了whl文件_python怎样安装whl文件
- matlab两个力的合成与分解,[转帖]小波图像分解与合成(例子) - Matlab讨论区 - 振动论坛 动力学,噪声 -......
- 强化学习之Grid World的Monte Carlo算法解析【MiniWorld】SYSU_2023SpringRL
- 【单片机仿真项目】模拟开关灯(proteus原理图+keil代码)
- CDA数据分析师视频教程全套零基础入门excel考试教学课程2022
- 读取word、pdf某些位置的值
- 牛顿迭代法(C++)
- vb怎么自动连接服务器,vb如何连接云服务器数据库(云服务器和云数据库)