scrapy-splash简单使用详解


Posted in Python onFebruary 21, 2021

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 使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python学习 流程控制语句详解
Jun 01 Python
使用Python的Scrapy框架十分钟爬取美女图
Dec 26 Python
python安装numpy&安装matplotlib& scipy的教程
Nov 02 Python
Python安装图文教程 Pycharm安装教程
Mar 27 Python
10个Python小技巧你值得拥有
Sep 29 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
django之状态保持-使用redis存储session的例子
Jul 28 Python
pytorch之添加BN的实现
Jan 06 Python
Python安装OpenCV的示例代码
Mar 05 Python
Python scrapy爬取小说代码案例详解
Jul 09 Python
python转化excel数字日期为标准日期操作
Jul 14 Python
Python requests及aiohttp速度对比代码实例
Jul 16 Python
详解使用scrapy进行模拟登陆三种方式
Feb 21 #Python
利用Python如何画一颗心、小人发射爱心
Feb 21 #Python
python 第三方库paramiko的常用方式
Feb 20 #Python
Python中Qslider控件实操详解
Feb 20 #Python
python基于selenium爬取斗鱼弹幕
Feb 20 #Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 #Python
python爬虫用request库处理cookie的实例讲解
Feb 20 #Python
You might like
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
Javascript 不能释放内存.
2006/09/07 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
javascript基本类型详解
2014/11/28 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
微信小程序 image组件binderror使用例子与js中的onerror区别
2017/02/15 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
element中的$confirm的使用
2020/04/26 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
python获取元素在数组中索引号的方法
2015/07/15 Python
利用python求相邻数的方法示例
2017/08/18 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
Python读取表格类型文件代码实例
2020/02/17 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
2020/12/14 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
有原因的手表:Flex Watches
2019/03/23 全球购物
公司营业员的工作总结自我评价
2013/10/05 职场文书
高中的自我鉴定
2013/12/16 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
舞蹈兴趣小组活动总结
2014/07/07 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
统招统分证明
2015/06/23 职场文书
javascript函数式编程基础
2021/09/15 Javascript
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python