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实现排序算法
Feb 14 Python
在Python的struct模块中进行数据格式转换的方法
Jun 17 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Python和JavaScript间代码转换的4个工具
Feb 22 Python
python常用函数详解
Sep 13 Python
python实战教程之自动扫雷
Jul 13 Python
python微元法计算函数曲线长度的方法
Nov 08 Python
Python设计模式之外观模式实例详解
Jan 17 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
对django 模型 unique together的示例讲解
Aug 06 Python
Python函数调用追踪实现代码
Nov 27 Python
基于PyTorch中view的用法说明
Mar 03 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
最贵的咖啡是怎么产生的,它的风味怎么样?
2021/03/04 新手入门
php array_merge下进行数组合并的代码
2008/07/22 PHP
PHP采集利器 Snoopy 试用心得
2011/07/03 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
PHP对象相互引用的内存溢出实例分析
2014/08/28 PHP
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
js闭包实现按秒计数
2015/04/23 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
shiro授权的实现原理
2017/09/21 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
2017/11/27 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
前端性能优化建议
2020/09/17 Javascript
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
一行Python代码制作动态二维码的实现
2019/09/09 Python
python3实现弹弹球小游戏
2019/11/25 Python
Python yield的用法实例分析
2020/03/06 Python
openCV提取图像中的矩形区域
2020/07/21 Python
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
求最大连续递增数字串(如"ads3sl456789DF3456ld345AA"中的"456789")
2015/09/11 面试题
一些高难度的SQL面试题
2016/11/29 面试题
幼师自我鉴定范文
2013/10/01 职场文书
师范毕业生个人求职信
2013/12/09 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
低碳环保口号
2014/06/12 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
浅谈Python numpy创建空数组的问题
2021/05/25 Python
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL