首页 > 解决方案 > 哪个解析速度更快:Scrapy 还是 Selenium?

问题描述

免责声明:我知道在必须使用 Web 驱动程序检索动态生成的内容时显然存在开销,但这个问题是关于每种语言的解析能力。如果您要否决我的问题,如果您能留下解释,那就太好了!

简单的问题: 使用一个框架进行解析是否比另一个框架更有效?

from scrapy.http import HtmlResponse

browser.get(request.url)

将动态内容传输到 Scrapy 进行解析

body = browser.page_source
response = HtmlResponse(browser.current_url, body=body, encoding='utf-8', request=request)
whatever = response.xpath('//whatever')

用 Selenium 解析

browser.get(request.url)
whatever = browser.find_elements_by_xpath('//whatever')

一种语言在解析效率时是否比另一种语言更有效,还是在 Selenium 检索动态内容后差异微不足道?

我要问的一个原因是我发现 Scrapy 更容易使用 - 更好的语法 - 所以page_source如果它不会或不会显着影响我的蜘蛛的效率,我肯定会转移以便用 Scrapy 解析.

标签: pythonseleniumscrapy

解决方案


首先,这是一个苹果与橙子的比较。Scrapy解析只是在客户端进行内存解析,而selenium浏览器是控制的,你得到实际呈现的 dom html,当然它比scrapy那种情况慢得多

事情是任何加载 JS/CSS/Images 的东西都会比那些只解析主 html 文件的东西慢得多。当你这样做

whatever = response.xpath('//whatever')

您没有开销,它只是在内存中的 html 文档上运行 xpath。当你这样做

whatever = browser.find_elements_by_xpath('//whatever')

它是 JSON RPC 命令,所以你有

          http                http/socket 
your code ----> browser agent ------------> browser

这具有很高的开销。此外,浏览器总是比下载 html 并解析它慢


推荐阅读