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

Posted

技术标签:

【中文标题】使用 scrapy-splash 会显着影响抓取速度吗? [关闭]【英文标题】:Does using scrapy-splash significantly affect scraping speed? [closed] 【发布时间】:2018-09-28 05:20:17 【问题描述】:

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

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

使用 scrapy 抓取 vanilla html 页面所需的时间与使用 scrapy-splash 抓取 javascript 呈现的 html 所需的时间有什么比较?

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

【问题讨论】:

【参考方案1】:

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

您必须知道,要渲染所有 javascript,splash 需要一些时间,并且 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 实例,做一些工作,提取数据,然后在所有工作完成后关闭它。

【讨论】:

感谢您回答@Nandesh!这个问题已经结束了,但你的回答涵盖了我所有的重点! @mgrollins 总是 :)

以上是关于使用 scrapy-splash 会显着影响抓取速度吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥删除 ORDER BY 会显着加快此查询的速度?

为啥在 c# 中重用数组会显着提高性能?

为啥表上存在主键会显着提高列存储索引的性能?

WebGL 警告:“属性 0 已禁用。这会显着降低性能”

scrapy-splash抓取动态数据例子二

scrapy-splash抓取动态数据例子五