2017-06-20 58 views
0

我試圖從marinetraffic.com webscrape數據。這是一個非常簡單的表格:如何檢測表單提交工作htmlunit

<form enctype="multipart/form-data" id="login_form_REACT" class="text-left ws-validate" role="form" accept-charset="utf-8"> 
<div style="display: none;"> 
    <input type="hidden" name="_method" value="POST"> 
</div> 
<div class="form-group"> 
    ... 
    <input type="email" id="email" class="form-control" required="" placeholder="Email" name="data[email]"> 
    ... 
    <input type="password" id="password" class="form-control user-error" required="" placeholder="Password" name="data[password]"> 
    ... 
    <input type="checkbox" name="data[remember]" id="remember2" value="1"> 
    ... 
    <button type="submit" class="btn btn-lg btn-block btn-primary vertical-offset-10 btn btn-default">Sign in</button> 
</div> 
</form> 

我到目前爲止有:

String username = "[email protected]"; 
String password = "fake_password"; 

WebClient client = new WebClient(BrowserVersion.CHROME); 
client.getOptions().setThrowExceptionOnScriptError(false); 
client.setAjaxController(new NicelyResynchronizingAjaxController()); 

HtmlPage webPage = (HtmlPage)client.getPage("https://www.marinetraffic.com/"); 
HtmlForm loginForm = (HtmlForm)webPage.getElementById("login_form_REACT"); 

loginForm.getInputByName("data[email]").setValueAttribute(username); 
loginForm.getInputByName("data[password]").setValueAttribute(password); 

((HtmlButton)loginForm.getFirstByXPath("//button[@type='submit']")).click(); 

我打印生成的網頁,這是一樣的網頁,但填好了表單我不是。確定如何通過點擊按鈕來測試發佈請求是否已經結束。

有沒有什麼辦法可以用HtmlUnit檢測傳出的HTTP請求?或者爲什麼這個網頁不讓我登錄?不確定這是否是相關信息,但MarineTraffic在登錄期間進行頁面刷新而不是頁面重定向。

回答

0

是的。只需啓用HttpClient連線記錄。

+0

我正在做對嗎?我正在關注[this](https://hc.apache.org/httpcomponents-client-ga/logging.html),並且我將這些參數複製並粘貼到JVM運行設置中。我只打開了我想要測試的代碼行,但唯一的事情是打印**警告:遇到過時的內容類型:'application/x-javascript'**。 –