微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 jsoup 比 selenium 或 curl 快这么多?

如何解决为什么 jsoup 比 selenium 或 curl 快这么多?

在过去的十年中,我编写了许多网络爬虫。最初使用 C++,然后是 C#,但最近广泛使用 Java 和 Python。这些天,我是否用 java 或 python 编写了一个 webscraper 只是一个掷硬币的问题。但是,在过去的 3 或 4 年中,我注意到在某种程度上,jsoup 比 pycurl、pyrequest 和 selenium 都快得多。 jsoup的秘诀是什么?为什么它在速度方面让所有其他方法都脱颖而出?

解决方法

我不知道 pycurl 和 pyrequest,但我可以告诉你 JSoup 和 Selenium。最大的区别是 selenium webdriver 驱动一个真实的浏览器,它带有一个 live DOM,在 selenium 的每个动作执行之前,它需要检查有问题的元素是否仍然处于相同的状态。这种与真实浏览器的交互自然比 JSoup 所做的要复杂得多:JSoup 是一个简单的 HTML 解析器。因此,它会解析 HTML 文档(或 XML)一次并在内存中创建一个表示。只有 JSoup 命令会改变 DOM,因此 JSoup 可以非常高效地处理这些内容。

您使用这种方法付出的代价是 JSoup 自然不会解释或运行 Javascript。因此,依赖异步数据加载的网站需要您深入了解它并直接加载内容。在 selenium 中,您可以让浏览器完成所有工作并“收获”呈现的结果 HTML。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。