使用 scrapy-splash 会显着影响抓取速度吗?

Does using scrapy-splash significantly affect scraping speed?

到目前为止,我一直在使用 scrapy 和编写自定义 类 来处理使用 ajax 的网站。

但是如果我使用 scrapy-splash,据我所知,它会在 javascript 之后抓取渲染的 html,我的爬虫速度会受到显着影响吗?

使用 scrapy 抓取原始 html 页面与使用 scrapy-splash 呈现 html 的 javascript 页面所花费的时间有何不同?

最后,scrapy-splash 和 Selenium 相比如何?

这取决于页面上 javascript 的数量。

您必须知道渲染所有 javascript 启动画面 需要一些时间 并且 python 应用程序无需等待渲染完成即可继续.所以有时候splash也是不行的。

  • 您可以明确地等待渲染,因为它通常需要一些时间。
  • 此外,张贴一些 wait.
  • 也是一个好习惯

这里,

import scrapy
from scrapy_splash import SplashRequest

yield scrapy.Request(url, callback=self.parse, meta={'splash':{'args':{'wait':'25'},'endpoint':'render.html'}})

import scrapy
from scrapy_splash import SplashRequest

yield SplashRequest(url, self.parse, endpoint='render.html',
        args={'wait': 5, 'html' : 1 } ) 

在 scrapy 和 selenium 之间

Selenium仅用于自动化web浏览器交互,Scrapy用于下载HTML,处理数据并保存(整个网络爬虫框架)。

关于抓取,我会推荐 scrapy 如果问题是 javascript。

  • Scrapy 已经有自己的 javascript 官方项目 scrapy-splash
  • 此外,您可以在 scrapy spider 中从 Selenium 创建新的 webdriver 实例,做一些工作,提取数据,然后在所有工作完成后关闭它。