首页 > 其他分享 >Splash与Scrapy结合

Splash与Scrapy结合

时间:2023-07-05 22:56:31浏览次数:49  
标签:com self args 结合 Scrapy splash Splash scrapy

Splash与Scrapy结合

image-20220728164534862

scrapy-splash 教程 — splash中文文档 0.1 文档

https://splash-cn-doc.readthedocs.io/zh_CN/latest/scrapy-splash-toturial.html

安装scrapy-splash库

 pip install scrapy-splash==0.8.0

配置splash服务(以下操作全部在settings.py)

使用splash解析,要在配置文件中设置splash服务器地址:

SPLASH_URL = 'http://localhost:8050/' 

将splash middleware添加到DOWNLOADER_MIDDLEWARE中

DOWNLOADER_MIDDLEWARES = {
'scrapy_splash.SplashCookiesMiddleware': 723,
'scrapy_splash.SplashMiddleware': 725,
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}

Enable SplashDeduplicateArgsMiddleware

SPIDER_MIDDLEWARES = {
 'scrapy_splash.SplashDeduplicateArgsMiddleware': 100
}

这个中间件需要支持cache_args功能; 它允许通过不在磁盘请求队列中多次存储重复的Splash参数来节省磁盘空间。如果使用Splash 2.1+,则中间件也可以通过不将这些重复的参数多次发送到Splash服务器来节省网络流量

配置消息队列所使用的过滤类

DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'

配置消息队列需要使用的类

HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

样例

方法1

import scrapy
from scrapy_splash import SplashRequest
class TxxxxxSpider(scrapy.Spider):
  name = 'tuniu'
  allowed_domains = ['tuniu.com']
  def start_requests(self):
    yield SplashRequest('http://www.xxxxx.com/', args={'wait': 0.5})


  def parse(self, response):
    print(response.text)

方法2

class TuniuSpider(scrapy.Spider):
  name = 'xxxxx2'
  allowed_domains = ['xxxxxx.com']


  def start_requests(self):
    url = 'http://www.xxxxx.com/'
    
    lua='''
     function main(splash,args)
       splash:go(args.url)
       splash:wait(1.5)
       return splash:html()
     end
     '''
    yield SplashRequest(url,callback=self.parse,args={'lua_source':lua},endpoint='execute')
  def parse(self, response):
    with open('a2.html','wb') as f:
      f.write(response.body)

 

标签:com,self,args,结合,Scrapy,splash,Splash,scrapy
From: https://www.cnblogs.com/jiangjiayun/p/17530531.html

相关文章

  • 从头学Java17-Stream API(二)结合Record、Optional
    StreamAPIStreamAPI是按照map/filter/reduce方法处理内存中数据的最佳工具。本系列教程由Record讲起,然后结合Optional,讨论collector的设计。使用Record对不可变数据进行建模Java语言为您提供了几种创建不可变类的方法。可能最直接的是创建一个包含final字段的final类。......
  • Scrapy保存数据到多个数据库
    Scrapy保存数据到多个数据库目标网站:中国福利彩票网双色球往期数据阳光开奖(cwl.gov.cn) http://www.cwl.gov.cn/ygkj/wqkjgg/代码classMongoPipeline:defopen_spider(self,spider):self.client=pymongo.MongoClient()self.ssq=self.client.bjsxt.ssq......
  • 结合静态与动态分析优势范围的fuzzer:Arbiter
    对于Arbier这款新型fuzzer的研究,目前网络上几乎没有内容,因此大部分内容的直接来源于Arbier的论文《Arbiter:BridgingtheStaticandDynamicDivideinVulnerabilityDiscoveryonBinaryPrograms》,该论文随着2022年8月的USENIX安全研讨会的论文集中发表。1.引言当前最先......
  • 爬虫-Scrapy框架安装使用2
    Scrapy框架其他方法功能集合笔记使用LinkExtractor提取链接使用Selectorimportscrapyfrombs4importBeautifulSoupclassBookSpider(scrapy.Spider):name="book"allowed_domains=["books.toscrape.com"]start_urls=["http://books.t......
  • [OSPP开源之夏-2023] 结合NWR实现Flexible Raft
    FeatureName:ImplementingFlexibleRaftwithNWRAuthor:[email protected]:2023-06-28IssueLink:https://github.com/sofastack/sofa-jraft/issues/1003Summary我们希望在原始RAFT算法的基础上,让Leader选举和日志复制除了能需要获得多数派确认模型的支持之......
  • SAM与Prompt的结合
    1.SAM介绍由MetaAIResearch开发的Segmentanythingmodel(简称SAM)最近引起了广泛的关注。SAM在超过10亿个mask的大型分割数据集上进行了训练,能够在特定的图像上分割任何对象。在最初的SAM工作中,作者们使用了零样本迁移任务(如边缘检测)来评估SAM的性能。最近,许多工作试图在各种场景......
  • scrapy 2.x相关配置
    使用pip安装scrapy之后可能并不能直接运行,会遇到各种报错,可能是依赖库的版本不兼容导致的,可能需要安装或更新以下依赖:cryptography==38.0.4​pyopenssl==22.0.0​certifi==2023.5.7在windowspython3.8+下的scrapy框架内使用asyncio需要先执行以下代码:asyncio.set_even......
  • Splash反爬
    为什么要反爬爬虫:使用任何技术手段,批量获取网站信息的一种方式。关键在于批量反爬虫:使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。关键也在于批量因爬虫的访问频率过高影响服务器的运行影响别人业务导致服务器宕机单一的DoS攻击一般是采用一对一方式的......
  • Factory. IO工厂结合西门子博途v16做的一个仿真控制
    Factory.IO工厂结合西门子博途v16一个仿真。有电气图纸Factory仿真软件 博途程序博途v16安装包,需要可以直接联系。程序安全可靠,学习借鉴必备资料。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/693956362794.html......
  • 图文结合带你搞懂GreatSQL体系架构
    往期系列回顾图文结合系列之带你搞懂MySQL日志系列很多小伙伴使用了GreatSQL,但是对GreatSQL的底层原理还不是很了解,今天就带大家一起揭开GreatSQL体系架构的神秘面纱!首先来回顾一张经典的体系架构图:图1_GreatSQL5.7版本体系架构图由此可以发现,GreatSQL5.7由以下几部分......