我正在尝试编写Java应用程序,我的主要范围是登录网站并解析一些数据。我选择使用htmlunit和jsoup。我一开始就陷入困境。在尝试在https://github.com/login页面上查找表单ID并将其放入htmlunit代码并继续登录时,该页面的源代码如下:
<form accept-charset="UTF-8" action="/session" data-form-nonce="39175dde4169cc3f2ad998cac114a63525a17f3f" method="post">
表单没有ID,因此htmlunit如何识别它?
可能发布一个代码示例。
谢谢。
github登录页面上只有一种形式,因此在这里识别并不是真正的问题。如果您想知道如何在不使用的情况下选择元素,则getElementByID
可以使用querySelector("...")
:
范例程式码
WebClient webClient = new WebClient(BrowserVersion.CHROME);
String url = "https://github.com/login";
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
HtmlPage page = webClient.getPage(url);
DomElement form = (DomElement) page.querySelector("form");
System.out.println(form.asXml());
webClient.close();
输出
<form accept-charset="UTF-8" action="/session" data-form-nonce="0cd9f59e177729dbfe5a1b275514fdcc21be8c84" method="post">
<div style="margin:0;padding:0;display:inline">
<input name="utf8" type="hidden" value="✓"/>
<input name="authenticity_token" type="hidden" value="3rrjjZbyJ6n310XnDR9mXCi5pJ6OsA+HvLJ0oem8k/XHj37Sd26GXxG7IQk5tcbDnPQnE7WvIjNgU77428iajw=="/>
</div>
<div class="auth-form-header p-0">
<h1>
Sign in to GitHub
</h1>
</div>
<div id="js-flash-container">
</div>
<div class="auth-form-body mt-3">
<label for="login_field">
Username or email address
</label>
<input autocapitalize="off" autocorrect="off" autofocus="autofocus" class="form-control input-block" id="login_field" name="login" tabindex="1" type="text"/>
<label for="password">
Password
<a href="/password_reset" class="label-link">
Forgot password?
</a>
</label>
<input class="form-control form-control input-block" id="password" name="password" tabindex="2" type="password"/>
<input class="btn btn-primary btn-block" data-disable-with="Signing in…" name="commit" tabindex="3" type="submit" value="Sign in"/>
</div>
</form>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句