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中__call__方法示例分析
Oct 11 Python
python对url格式解析的方法
May 13 Python
Python获取文件所在目录和文件名的方法
Jan 12 Python
flask中主动抛出异常及统一异常处理代码示例
Jan 18 Python
解决python写入mysql中datetime类型遇到的问题
Jun 21 Python
Python日志模块logging基本用法分析
Aug 23 Python
python 获取键盘输入,同时有超时的功能示例
Nov 13 Python
python+flask实现API的方法
Nov 21 Python
关于Python核心框架tornado的异步协程的2种方法详解
Aug 28 Python
用python求一重积分和二重积分的例子
Dec 06 Python
tensorflow实现残差网络方式(mnist数据集)
May 26 Python
用python批量下载apk
Dec 29 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
一种JavaScript的设计模式
2006/11/22 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
JS实现随机数生成算法示例代码
2013/08/08 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
javascript学习笔记之函数定义
2015/06/25 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
对Layer弹窗使用及返回数据接收的实例详解
2019/09/26 Javascript
微信小程序实现底部弹出框
2020/11/18 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
[01:55]2014DOTA2国际邀请赛 BBC正赛第一天总结
2014/07/10 DOTA
Python中http请求方法库汇总
2016/01/06 Python
python实现录音小程序
2020/10/26 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
python 变量初始化空列表的例子
2019/11/28 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
python中if嵌套命令实例讲解
2021/02/25 Python
高级电工工作职责
2013/11/21 职场文书
学生会招新策划书
2014/02/14 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
幼儿园教师节演讲稿
2014/09/03 职场文书
公司领导班子召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
会计求职信怎么写
2015/03/20 职场文书
英文慰问信范文
2015/03/24 职场文书
留学推荐信中文范文
2015/03/26 职场文书
2015国庆节感想
2015/08/04 职场文书
区域销售大会开幕词
2016/03/04 职场文书
2019交通安全宣传标语集锦!
2019/06/28 职场文书
JavaWeb 入门:Hello Servlet
2021/07/16 Java/Android
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js