python - 哪个解析速度更快: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 解析.
解决方案
首先,这是一个苹果与橙子的比较。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 并解析它慢
推荐阅读
- ios - MFMailComposeViewController 创建的页面由于层次结构而无法显示 - Swift 4
- android - android addTextChangedListener 退格时未完全删除 Firebase 中的文本
- json - 将 JSON 数据附加到文件
- mysql - 如何自动将数据从mysql更新到logstash
- android - 显示白色空白页的 Webview
- api - Google Sheets IMPORTXML:Xpath 不起作用(文档节点确实提供数据)
- php - PHP 多文本框数组 POST
- python - django-filter 获取查询集
- sockets - 客户端仅发送其证书(单向身份验证)的 SSL 握手是否可能。服务器不需要发送任何证书?
- java - 用户输入扫描仪未知来源