【发布时间】:2017-04-02 23:55:03
【问题描述】:
我需要用 Java 解析网页中的 HTML 元素,填写表单并提交以模拟登录。
我一直在做一些研究,这就是我使用jsoup 库所做的。
但是,在实现之后,我意识到jsoup 仅用于解析,不能执行按钮点击等操作。
在这个例子中,我需要点击submitButton元素。
try {
Document htmlDoc = Jsoup.connect(MY_URL).get();
Element loginForm = htmlDoc.getElementById("login-form");
Element usernameField = loginForm.getElementById("username");
Element passwordField = loginForm.getElementById("passwd");
Element submitButton = loginForm.getElementById("submit");
usernameField.val(username);
passwordField.val(password);
// I need to simulate `submitButton` click so I can login
} catch (Exception e) {
Log.e("TAG", e.toString());
}
我对@987654326@ 无法做到这一点的理解是否正确?
如果有,是否有适用于 Android 的库?
我知道有很多 Java 库,但由于 javax 的限制,大多数都无法与 Android 一起使用(例如 HtmlUtil)。
【问题讨论】:
-
您想模拟浏览器还是只想发布表单?为什么你需要解析表单呢?毕竟,您在提供的代码 sn-p 中没有从表单中提取任何信息。
-
我不需要提取任何信息。我需要做的就是验证提供的用户名和密码是否有效。如果我可以模拟点击,我可以验证提供的 ID 和密码是否有效。我知道有更好的方法可以做到这一点,但是我需要暂时以这种方式实现它
-
该方法在很大程度上取决于您要探测的站点的性质。如果它返回错误(例如 404、403、401),您只需发布用户名和密码并查看响应即可。请参阅developer.android.com/reference/java/net/HttpURLConnection.html 以获得正确的轨道。如果您搜索 HttpURLConnection 和 HTTP POST,您将获得大量关于如何将表单数据发布到 URL 的教程。
-
需要找到需要传递的目标链接和参数。你不需要解析页面。
-
我已经有了目标链接和参数。根据下面给出的答案(链接),我尝试了但是我得到了以下响应:“最近的请求被拒绝,因为它包含无效的安全令牌。请刷新页面并重试。”当我做 post 方法时
标签: java android jsoup html-parsing