2016-10-12 37 views
2

我正在尝试编写Java应用程序,我的主要范围是登录到网站并解析一些数据。我选择使用htmlunit和jsoup。我被困在一开始。虽然试图找到https://github.com/login页面表单的id把它放在代码的HtmlUnit与登录继续,但该页面的源代码如下:在github上的Htmlunit登录 - 无法识别表单编号

<form accept-charset="UTF-8" action="/session" data-form-nonce="39175dde4169cc3f2ad998cac114a63525a17f3f" method="post">

形式没有一个ID,所以htmlunit如何识别它?

可能发布代码示例。

谢谢。

回答

1

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> 
+1

哇,非常感谢!它像魅力一样工作,你拯救了我的一天! –

+0

非常欢迎您,很高兴我能提供帮助。 –