中易网

怎样使用scrapy爬取js动态生成的数据

答案:1  悬赏:70  
解决时间 2021-01-14 13:24
怎样使用scrapy爬取js动态生成的数据
最佳答案
解决方案:
  利用第三方中间件来提供JS渲染服务: scrapy-splash 等。
  利用webkit或者基于webkit库
  Splash是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。Twisted(QT)用来让服务具有异步处理能力,以发挥webkit的并发能力。
  下面就来讲一下如何使用scrapy-splash:
  利用pip安装scrapy-splash库:
  $ pip install scrapy-splash
  scrapy-splash使用的是Splash HTTP API, 所以需要一个splash instance,一般采用docker运行splash,所以需要安装docker。
  安装docker, 安装好后运行docker。
  拉取镜像(pull the image):
  $ docker pull scrapinghub/splash
  用docker运行scrapinghub/splash:
  $ docker run -p 8050:8050 scrapinghub/splash
  配置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'
  例子
  获取HTML内容:
  import scrapy
  from scrapy_splash import SplashRequest
  class 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.
  # ...
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
轿车冬天需要温车吗?
请问这种ppt如何去掉密码,或者如何修改? ps
技规真难记。“无双向闭塞设备的双线区间反方
麦当劳面试如何该回答
中国建设银行(万新街新城口腔镶复所斜对面)地
分级基金深成指B(150023)为何没有下折?
训练了一年你还想在礼仪队学到什么?
查找一条认真读书的成语挥着警句来激励自己
少林寺之藏经阁武功排名
形容很爽的成语有哪些
羊皮一体可以用滚桶洗衣机洗吗
终极电车痴汉动漫百度云
0.03/0.8竖式怎么写
这几个行楷接近古今哪个书法家的风格?
道达尔5W30 全合成机油中A5B5/ SL 和 C3&
推荐资讯
两个月大的婴儿喜欢吸手怎么办
白狐少女|地铁白狐少女|白狐少女图集下载
他说咪西咪西我怎么回复他
斯玛特儿童美术(无锡江阴)地址在什么地方,我
我大三她大一 相爱了以后会在一起嘛
ph值在5到8之间是什么颜色
杉杉firs与杉杉有区别吗?
PSV TV支持蓝牙音箱吗?不支持的话,在显示器
怎样设置路由器为什么在网页上打了192.163.1.
如何才能禅定
新百伦999鞋怎么洗
我的心要静,要沉稳,我要静
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?