我正在做一些用Selenium制作的网页抓取(所以使用这个不是问题)。当我必须识别一个元素(即:获取src属性)时,我应该使用Selenium内部选择引擎还是应该使用Jsoup(这更容易)。所以问题是:使用Jsoup是如此表现相当可观?我应该尽可能多地使用硒吗? 感谢
答案 0 :(得分:10)
如果您已经将DOM解析为JSoup,那么我建议使用JSoup。它比硒快得多,因为它不需要打扰生活中的硒。 DOM。在对它们进行任何操作之前,Selenium必须始终检查元素句柄是否仍然有效。
如果可以的话,完全避免使用硒,因为当你进行严肃的刮擦时,它的开销非常明显。但是,如果您的内容是由客户端中的JavaScript动态生成的,那么Selenium会发光。 JSoup根本无法处理这个问题,因为它不会执行JavaScript。
回答评论的附录
简短回答:这取决于!
长: 如果您正在抓取的网站是由JavaScript生成的,并且它在生成后没有变化,那么使用selenium访问它是完全没问题的,特别是如果DOM很复杂并且需要很长时间才能读入JSoup,尽管JSoup相当快。但是,JSoup会再次在内存中生成DOM,所以如果你的DOM很庞大,你不仅会在内存中使用它,而且还会在JSoup中使用它。在您的情况下,这可能是也可能不是问题,但值得记住。
根据我的个人经验,我会在获得最终HTML之后尽快杀死selenium进程并再次在JSoup中解析它,因为它就像你说的那样:Jsoup scraping比相应的selenium选择器结构更容易,特别是如果您确定初始创建后DOM中的任何更改都与您的抓取无关。