分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

利用scrapy-splash爬取JS生成的动态页面

发布时间:2023-09-06 01:40责任编辑:顾先生关键词:暂无标签

目前,为了加速页面的加载速度,页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy没有JS engine,所以爬取的都是静态页面,对于JS生成的动态页面都无法获得。

解决方案:

  • 利用第三方中间件来提供JS渲染服务: scrapy-splash 等。
  • 利用webkit或者基于webkit库

Splash是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。Twisted(QT)用来让服务具有异步处理能力,以发挥webkit的并发能力。


下面就来讲一下如何使用scrapy-splash:

  1. 利用pip安装scrapy-splash库:
     $ pip install scrapy-splash 

  2. scrapy-splash使用的是Splash HTTP API, 所以需要一个splash instance,一般采用docker运行splash,所以需要安装docker。

  3. 安装docker, 安装好后运行docker。

  4. 拉取镜像(pull the image):
     $ docker pull scrapinghub/splash 

  5. 用docker运行scrapinghub/splash:
     $ docker run -p 8050:8050 scrapinghub/splash 

  6. 配置splash服务(以下操作全部在settings.py):

    1)添加splash服务器地址:

     SPLASH_URL = ‘http://localhost:8050‘   

    2)将splash middleware添加到DOWNLOADER_MIDDLEWARE中:

    DOWNLOADER_MIDDLEWARES = {‘scrapy_splash.SplashCookiesMiddleware‘: 723,‘scrapy_splash.SplashMiddleware‘: 725,‘scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware‘: 810,}

    3)Enable SplashDeduplicateArgsMiddleware:

     SPIDER_MIDDLEWARES = { ‘scrapy_splash.SplashDeduplicateArgsMiddleware‘: 100, } 

    4)Set a custom DUPEFILTER_CLASS:

     DUPEFILTER_CLASS = ‘scrapy_splash.SplashAwareDupeFilter‘ 

    5)a custom cache storage backend:

    HTTPCACHE_STORAGE = ‘scrapy_splash.SplashAwareFSCacheStorage‘
  7. 例子
    获取HTML内容:

import scrapyfrom scrapy_splash import SplashRequestclass MySpider(scrapy.Spider): ???start_urls = ["http://example.com", "http://example.com/foo"] ???def start_requests(self): ???????for url in self.start_urls: ???????????yield SplashRequest(url, self.parse, args={‘wait‘: 0.5}) ???def parse(self, response): ???????# response.body is a result of render.html call; it ???????# contains HTML processed by a browser. ???????# ... ???????

利用scrapy-splash爬取JS生成的动态页面

原文地址:https://www.cnblogs.com/zhouxinfei/p/8410723.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved