Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么jsoup比selenium或curl快得多?_Selenium_Curl_Jsoup - Fatal编程技术网

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

为什么jsoup比selenium或curl快得多?,selenium,curl,jsoup,Selenium,Curl,Jsoup,在过去的十年里,我写了很多网络垃圾。最初是C++,然后是C语言,但最近和广泛应用于java和python。这些天来,我是用java还是python编写webscraper只是掷硬币而已。然而,在过去的三四年中,我注意到,不知何故,在某种程度上,jsoup比pycurl、pyrequest和selenium都要快得多。jsoup的秘密是什么?为什么它在速度方面会把其他方法都吹出水面?我不知道pycurl和pyrequest,但我可以告诉你们关于JSoup和Selenium的情况。最大的区别在于,S

在过去的十年里,我写了很多网络垃圾。最初是C++,然后是C语言,但最近和广泛应用于java和python。这些天来,我是用java还是python编写webscraper只是掷硬币而已。然而,在过去的三四年中,我注意到,不知何故,在某种程度上,jsoup比pycurl、pyrequest和selenium都要快得多。jsoup的秘密是什么?为什么它在速度方面会把其他方法都吹出水面?

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


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

谢谢。我在想jsoup中加载的一些javascript内容,但可能是一些PHP提供了我无法用简单的curl来处理的内容,无论是pycurl还是Windows终端或Linux bash中的批脚本curl。我的经验是,JSoup可以抓取一些curling无法抓取的内容,但它抓取这些内容的速度远远快于selenium(从字面上看,比我最近在一个应用程序上抓取新冠病毒数据时的60秒还要快)。你确定这真的是解析内容的时间吗?也许您还可以测量连接和检索数据所需的时间。JSoup当然有这样的方法,但这并不是JSoup最强大的一面。特别是当您需要处理cookies和SSL证书时,您可能需要查看apachehttpclient。