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

时间:2018-04-18 05:17:20

标签: python selenium web-scraping scrapy scrapy-splash

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

但是,如果我使用scrapy-splash,根据我的理解,在javascript之后擦除渲染的html,我的爬虫的速度会受到显着影响吗?

使用scrapy-splash刮擦带有scrapy和javascript呈现的html的香草html页面所需的时间之间的比较是什么?

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

1 个答案:

答案 0 :(得分:6)

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

你必须知道要渲染所有的javascript,启动需要一些时间并且python应用程序继续进行而不等待渲染完成。所以有时飞溅也无法做到。

  • 您可以明确地等待呈现,因为它通常需要一些时间。
  • 最好还是设置一些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和selen之间

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

谈论抓取我会推荐scrapy,如果问题是javascript。

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