带有 Selenium 或 HTMLUNIT 的 HttpClient?

Posted

技术标签:

【中文标题】带有 Selenium 或 HTMLUNIT 的 HttpClient?【英文标题】:HttpClient with Selenium or HTMLUNIT? 【发布时间】:2016-02-16 23:44:13 【问题描述】:

好的,所以我在一个小泡菜中。我遇到了 JSoup 的问题,因为该页面需要 javascript 才能完成加载某些页面。幸运的是,我过去曾解决过它(解析了原始的 javascript 代码),而且非常乏味。最近,我尝试制作一个程序来登录网站,但它需要来自元素的令牌。除非执行 JavaScript,否则该表单元素是不可见的,因此我什至无法提取它。所以我决定研究 Selenium。

第一个问题,这是我应该研究的图书馆吗?我之所以如此执着于使用 HttpClient 是因为其中一些网站的流量非常高,并且不会一直加载 但是 我不需要这些页面来加载所有方式。我只需要它加载到足以检索登录令牌的位置。一旦我发现所需的方法与让 Selenium 自动执行单击/等待/键入序列相比,我更喜欢使用原始 JSON/POST 方法与网络服务器通信。

基本上,我只需要 selenium 加载 1/4 的页面,只是为了检索请求令牌。我的程序的其余部分将使用 HttpClient 发送 POST 方法。

或者我应该让 selenium 完成所有工作?我的目标是速度。我需要登录,快速购买商品。

编辑:实际上,我可能会选择 htmlUnit,因为它非常小。我只需要抓取信息,我不想运行 Selenium 的 StandAlone Server。这是更好的方法吗?

【问题讨论】:

【参考方案1】:

基本上,HtmlUnit 比 Selenium 更快,所以如果你追求速度,你应该使用它。无论如何,请记住 Selenium 有自己的 HtmlUnitDriver 实现。因此,作为另一种选择,您可以将 Selenium 与 HtmlUnit 一起使用。它们之间的区别在于 HtmlUnit 本身是一个没有 GUI 的浏览器,而 Selenium 可以调用浏览器功能。您可能想查看其他问题以了解更多详细信息:Selenium vs HtmlUnit?

【讨论】:

以上是关于带有 Selenium 或 HTMLUNIT 的 HttpClient?的主要内容,如果未能解决你的问题,请参考以下文章

[Selenium+Java] Selenium with HTMLUnit Driver & PhantomJS

带有 HTMLUnitDriver 的 Selenium 3.0.x

Java 和 HTMLUnit:如何点击提交按钮?

Java和HTMLUnit:如何点击提交按钮?

零基础快速入门mini爬虫框架HtmlUnit

selenium处理极验滑动验证码