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 配置:

SPLASH_URL = 'http://localhost:8050'

DOWNLOADER_MIDDLEWARES = {

'scrapy_splash.SplashCookiesMiddleware': 723,

'scrapy_splash.SplashMiddleware': 725,

'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,

}

SPIDER_MIDDLEWARES = {

'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,

}

DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'

HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

3.4.scrapy 使用

from scrapy_splash import SplashRequest

yield SplashRequest(self.start_urls[0], callback=self.parse, args={'wait': 0.5})

4.测试代码:

import datetime

import os

import scrapy

from scrapy_splash import SplashRequest

from ..settings import LOG_DIR

class SplashSpider(scrapy.Spider):

name = 'splash'

allowed_domains = ['biqugedu.com']

start_urls = ['http://www.biqugedu.com/0_25/']

custom_settings = {

'LOG_FILE': os.path.join(LOG_DIR, '%s_%s.log' % (name, datetime.date.today().strftime('%Y-%m-%d'))),

'LOG_LEVEL': 'INFO',

'CONCURRENT_REQUESTS': 8,

'AUTOTHROTTLE_ENABLED': True,

'AUTOTHROTTLE_TARGET_CONCURRENCY': 8,

'SPLASH_URL': 'http://localhost:8050',

'DOWNLOADER_MIDDLEWARES': {

'scrapy_splash.SplashCookiesMiddleware': 723,

'scrapy_splash.SplashMiddleware': 725,

'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,

},

'SPIDER_MIDDLEWARES': {

'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,

},

'DUPEFILTER_CLASS': 'scrapy_splash.SplashAwareDupeFilter',

'HTTPCACHE_STORAGE': 'scrapy_splash.SplashAwareFSCacheStorage',

}

def start_requests(self):

yield SplashRequest(self.start_urls[0], callback=self.parse, args={'wait': 0.5})

def parse(self, response):

"""

:param response:

:return:

"""

response_str = response.body.decode('utf-8', 'ignore')

self.logger.info(response_str)

self.logger.info(response_str.find('http://www.biqugedu.com/files/article/image/0/25/25s.jpg'))

scrapy-splash接收到js请求:

到此这篇关于scrapy-splash简单使用详解的文章就介绍到这了,更多相关scrapy-splash 使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

scrapy-splash java,scrapy-splash简单使用详解相关推荐

  1. JVM调优系列--Java命令选项(参数)--大全/详解/常用

    原文网址:JVM调优系列--Java命令选项(参数)--大全/详解/常用_IT利刃出鞘的博客-CSDN博客 简介 说明        本文介绍Java的java命令用法,包括:常用用法.选项大全. J ...

  2. Java中的static关键字详解

    ** Java中的static关键字详解 ** 在一个类中定义一个方法为static,即静态的,那就是说无需本类的对象就可以调用此方法.调用一个静态方法就是 "类名.方法名" ,静 ...

  3. java中的进制输出转换_Java I/O : Java中的进制详解

    作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层. ...

  4. Java中的main()方法详解

    源文作者:leizhimin    源文链接:http://lavasoft.blog.51cto.com/62575/53263 源文作者版权申明: 版权声明:原创作品,允许转载,转载时请务必以超链 ...

  5. 《Java和Android开发实战详解》——1.2节Java基础知识

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  6. java 委托机制_通过反射实现Java下的委托机制代码详解

    简述 一直对Java没有现成的委托机制耿耿于怀,所幸最近有点时间,用反射写了一个简单的委托模块,以供参考. 模块API public Class Delegater()//空参构造,该类管理委托实例并 ...

  7. Java多线程之volatile详解

    Java多线程之volatile详解 目录: 什么是volatile? JMM内存模型之可见性 volatile三大特性之一:保证可见性 volatile三大特性之二:不保证原子性 volatile三 ...

  8. java委托机制教程_通过反射实现Java下的委托机制代码详解

    简述 一直对java没有现成的委托机制耿耿于怀,所幸最近有点时间,用反射写了一个简单的委托模块,以供参考. 模块api public class delegater()//空参构造,该类管理委托实例并 ...

  9. 《Java和Android开发实战详解》——2.2节构建Java应用程序

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...

最新文章

  1. 工业机器人打磨抛光编程员工资_让我们一起来谈谈,工业机器人行业的真实工资是多少?...
  2. 51nod 1004 【快速幂】
  3. sql script: Calculating Days
  4. node.js学习笔记5——核心模块1
  5. 跨浏览器的元素的竖直排列
  6. 如何在M1上运行较早的非本机Intel x86应用
  7. Caffe学习:Layers
  8. prime算法-最小生成树
  9. 算法:合并两个有序链表21. Merge Two Sorted Lists
  10. 基于微信会议室预约小程序毕业设计设计与实现 开题报告参考
  11. WebStorm如何设置字体大小
  12. Excel创建堆积柱形混合折线图
  13. android内部测试注册,马化腾也感受到了压力,开启微信号修改内测,安卓和iOS都可以...
  14. Linux下分卷压缩与解压
  15. 16S多样性测序,到底该选啥引物?!
  16. ScrollView的属性(纵向的用HorizontalScrollView)
  17. 度小满金融产品经理笔试题目
  18. python 服务端渲染_客户端渲染与服务端渲染
  19. Symantec Backup Exec Agent For Linux防火墙问题
  20. 计算机培训动员会演讲稿,计算机协会社长就职演讲稿与计算机培训心得体会合集.doc...

热门文章

  1. 【THINKPAD X240Intel Management Engine9.5升级10.0失败解决方案】
  2. Ansys-结构动力学分析-圆柱斜齿轮模态分析学习心得
  3. 2023年高考倒计时还有几天?支持计算倒计时天数的备忘录
  4. 技术面试问项目难题如何解决的_技术面试感觉什么都会,面试官一问回答不上来怎么办?...
  5. 猪身上的肉都分哪些部位?
  6. 商品管理-运营指挥室 看板
  7. oracle union详解,oracle union 及union all用法及差异
  8. 安装nginx并进行配置(记录来源于马哥linux运维教与文件操作优化、访问、日志相关的配置配置 五)
  9. nginx安装配置ssl模块支持https访问
  10. 分布式系统开发实战:分布式计算,分布式计算常用技术