使用 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 实例,做一些工作,提取数据,然后在所有工作完成后关闭它。
到目前为止,我一直在使用 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 实例,做一些工作,提取数据,然后在所有工作完成后关闭它。