Python 爬虫 scrapy 利用splash爬取动态网页

19 篇文章 0 订阅
5 篇文章 0 订阅

转载自 https://blog.csdn.net/mouday/article/details/81625830

依赖库:
pip install scrapy-splash

配置settings.py

# splash服务器地址
SPLASH_URL = 'http://localhost:8050'

# 支持cache_args(可选)
SPIDER_MIDDLEWARES = {
    'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
# 下载中间件设置
DOWNLOADER_MIDDLEWARES = {
    'scrapy_splash.SplashCookiesMiddleware': 723,
    'scrapy_splash.SplashMiddleware': 725,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810
}

# 设置去重过滤器
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'

# 启用缓存系统
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

代码示例

将原有Request 替换成 SplashRequest即可

# -*- coding: utf-8 -*-
import scrapy
from scrapy import cmdline
from scrapy_splash import SplashRequest

class ToscrapeJsSpider(scrapy.Spider):
    name = "toscrape_js"
    allowed_domains = ["toscrape.com"]
    start_urls = (
        'http://quotes.toscrape.com/js/',
    )

    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(url, args={"timeout": 5, "image": 0, 'wait': '5'})

    def parse(self, response):
        quotes = response.css(".quote .text::text").extract()
        for quote in quotes:
            print(quote)
            
if __name__ == '__main__':
    cmdline.execute("scrapy crawl toscrape_js".split())

SplashRequest参数说明
url: 待爬页面
headers: 与Request相同
cookies:与Request相同
args: {dict}传递给Splash的参数, wait很重要,需要给js足够的执行时间
cache_args: {list}让Splash缓存的参数
endpoint: Splash端点服务,默认render.html
splash_url: Splash服务器地址,默认为配置文件中的SPLASH_URL

设置代理:

args={
    'proxy': 'http://proxy_ip:proxy_port'
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值