• 售前

  • 售后

热门帖子
入门百科

scrapy-splash简单利用详解

[复制链接]
123457468 显示全部楼层 发表于 2021-10-25 19:50:56 |阅读模式 打印 上一主题 下一主题
1.scrapy_splash是scrapy的一个组件


scrapy_splash加载js数据基于Splash来实现的

Splash是一个Javascrapy渲染服务,它是一个实现HTTP API的轻量级欣赏器,Splash是用Python和Lua语言实现的,基于Twisted和QT等模块构建

利用scrapy-splash终极拿到的response相当于是在欣赏器全部渲染完成以后的网页源代码

2.scrapy_splash的作用


scrpay_splash可以或许模仿欣赏器加载js,并返回js运行后的数据
3.scrapy_splash的情况安装


3.1 利用splash的docker镜像
docker info 检察docker信息

docker images  检察所有镜像

docker pull scrapinghub/splash  安装scrapinghub/splash

docker run -p 8050:8050 scrapinghub/splash &  指定8050端口运行
3.2.pip install scrapy-splash
3.3.scrapy 配置:
  1.   SPLASH_URL = 'http://localhost:8050'
  2.   DOWNLOADER_MIDDLEWARES = {
  3.     'scrapy_splash.SplashCookiesMiddleware': 723,
  4.     'scrapy_splash.SplashMiddleware': 725,
  5.     'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
  6.   }
  7.   SPIDER_MIDDLEWARES = {
  8.     'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
  9.   }
  10.   DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
  11.   HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'
复制代码
3.4.scrapy 利用
  1. from scrapy_splash import SplashRequest
  2. yield SplashRequest(self.start_urls[0], callback=self.parse, args={'wait': 0.5})
复制代码
4.测试代码:
  1. import datetime
  2. import os
  3. import scrapy
  4. from scrapy_splash import SplashRequest
  5. from ..settings import LOG_DIR
  6. class SplashSpider(scrapy.Spider):
  7.   name = 'splash'
  8.   allowed_domains = ['biqugedu.com']
  9.   start_urls = ['http://www.biqugedu.com/0_25/']
  10.   custom_settings = {
  11.     'LOG_FILE': os.path.join(LOG_DIR, '%s_%s.log' % (name, datetime.date.today().strftime('%Y-%m-%d'))),
  12.     'LOG_LEVEL': 'INFO',
  13.     'CONCURRENT_REQUESTS': 8,
  14.     'AUTOTHROTTLE_ENABLED': True,
  15.     'AUTOTHROTTLE_TARGET_CONCURRENCY': 8,
  16.     'SPLASH_URL': 'http://localhost:8050',
  17.     'DOWNLOADER_MIDDLEWARES': {
  18.       'scrapy_splash.SplashCookiesMiddleware': 723,
  19.       'scrapy_splash.SplashMiddleware': 725,
  20.       'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
  21.     },
  22.     'SPIDER_MIDDLEWARES': {
  23.       'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
  24.     },
  25.     'DUPEFILTER_CLASS': 'scrapy_splash.SplashAwareDupeFilter',
  26.     'HTTPCACHE_STORAGE': 'scrapy_splash.SplashAwareFSCacheStorage',
  27.   }
  28.   def start_requests(self):
  29.     yield SplashRequest(self.start_urls[0], callback=self.parse, args={'wait': 0.5})
  30.   def parse(self, response):
  31.     """
  32.     :param response:
  33.     :return:
  34.     """
  35.     response_str = response.body.decode('utf-8', 'ignore')
  36.     self.logger.info(response_str)
  37.     self.logger.info(response_str.find('http://www.biqugedu.com/files/article/image/0/25/25s.jpg'))
复制代码
scrapy-splash吸收到js哀求:

到此这篇关于scrapy-splash简单利用详解的文章就先容到这了,更多干系scrapy-splash 利用内容请搜索草根技术分享以前的文章或继续欣赏下面的干系文章渴望各人以后多多支持草根技术分享!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作