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 相关文章推荐
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
Python实现统计英文单词个数及字符串分割代码
May 28 Python
Python素数检测实例分析
Jun 15 Python
Ubuntu下安装PyV8
Mar 13 Python
python开发利器之ulipad的使用实践
Mar 16 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
通过实例解析python创建进程常用方法
Jun 19 Python
详解python字符串驻留技术
May 21 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
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
PHP 数组基础知识小结
2010/08/20 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
jQuery获得内容和属性示例代码
2014/01/16 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
2017/06/15 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
[08:08]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY
2014/06/25 DOTA
简述Python2与Python3的不同点
2018/01/21 Python
Django视图和URL配置详解
2018/01/31 Python
python opencv之SIFT算法示例
2018/02/24 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
Python定义一个Actor任务
2020/07/29 Python
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
美国浴缸、水槽和水龙头购物网站:Vintage Tub & Bath
2019/11/05 全球购物
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
自我鉴定范文200字
2013/10/02 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
2015年售票员工作总结
2015/04/29 职场文书
员工年度工作总结2015
2015/05/18 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
导游词之海南天涯海角
2019/12/05 职场文书