Googleから検索結果ページを取得するには、HtmlUnit(v2.21)を使用します。これは、人を探しているときに「人も探している人」のリンクをクリックする必要があります(右側、例のリンクを参照)。これはJavaScriptをトリガし、現在のページの内容を変更します。しかし、これは私にJavaScript Wrapper Exceptionを与えます(下記参照)。Googleの結果ページでクリックするとJavaScript例外が発生する
クリッカブル例リンク:https://www.google.de/search?ie=UTF-8&safe=off&q=nicki+minaj
簡単なテストケースのエラーが発生した:
String url = "https://www.google.de/search?ie=UTF-8&safe=off&q=nicki+minaj";
WebClient client = new WebClient(BrowserVersion.BEST_SUPPORTED);
HtmlPage page = client.getPage(url);
HtmlElement link = page.getFirstByXPath("//a[@class='_Zjg']");
HtmlPage newPage = link.click(); //throws exception
this.storeResultFile(newPage.asXml(), "test");
client.close();
結果:私は "ページ" オブジェクトのXMLを格納していることを確認しました
net.sourceforge.htmlunit.corejs.javascript.WrappedException: Wrapped java.lang.NullPointerException
at net.sourceforge.htmlunit.corejs.javascript.Context.throwAsScriptRuntimeEx(Context.java:2053)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.doProcessPostponedActions(JavaScriptEngine.java:947)
at com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.processPostponedActions(JavaScriptEngine.java:1012)
at com.gargoylesoftware.htmlunit.html.DomElement.click(DomElement.java:799)
at com.gargoylesoftware.htmlunit.html.DomElement.click(DomElement.java:742)
at com.gargoylesoftware.htmlunit.html.DomElement.click(DomElement.java:689)
のXPath式は有効であり、結果があります。
誰もがアイデアを持っていますか?