内容简介:scrapy+splash 爬取动态网站(JS)
scrapy只支持静态网页的抓取,通过scrapy-splash,能实现对JavaScript的解析。
一、搭建 Docker 服务器
Docker的相关知识参考本站的Docker相关文章。
Scrapy-Splash采用Splash HTTP API,需要搭建一个Splash实例,用Docker搭建最方便:
$ docker run-d-p 8050:8050 --restart=always --name=splash scrapinghub/splash
在服务器运行好Docker后,就可以通过IP+端口(例如: http://123.206.211.100:8050 )访问了。
二、Scrapy项目
1,安装scrapy-splash
$ pip install scrapy-splash
2,配置(setting.py)
增加Splash服务器地址
SPLASH_URL = 'http://123.206.211.100:8050'
开启Splash中间件
DOWNLOADER_MIDDLEWARES = { 'scrapy_splash.SplashCookiesMiddleware': 723, 'scrapy_splash.SplashMiddleware': 725, 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810, ... }
其它设置
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter' HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage' SPLASH_COOKIES_DEBUG = True
3,spider.py使用SplashRequest
import scrapy from scrapy_splash import SplashRequest class SpiderS1(scrapy.Spider): name = "s1_spider" def start_requests(self): urls = ['http://sports.sina.com.cn/g/seriea/2017-05-23/doc-ifyfkqiv6736172.shtml', 'http://sports.sina.com.cn/basketball/nba/2017-05-23/doc-ifyfkqiv6683532.shtml'] requests = [] for url in urls: url = url.strip() request = SplashRequest(url, callback=self.parse, args={'wait':3}) requests.append(request) return requests def parse(self, response): self.log(response.url) ...
使用非常简单,具体请求参数参考 Scrapy&JavaScript integration through Splash 。
以上所述就是小编给大家介绍的《scrapy+splash 爬取动态网站(JS)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Nginx 通用网站镜像教程(适用于动态网站与静态网站)
- 三步学会爬动态网站
- 动态网站SEO解决方案经验汇总
- 数独动态解题演示小网站 - 基于Vue/pixi.js/Flask
- 网站安全防护深度解读:DDoS攻击、网站入侵以及网站篡改解决方案
- 网站被劫持到其它网站如何解决
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。