2017-06-09 17 views
-1

私は一部のデータを抽出できるようにウェブページ全体を取得しようとしています。私はHtmlUnitを使用しています(または使用しようとしています)。完全に完全なHTMLが生成されたページをJavaでロードする方法はありますか?

私が得たい結果は、すべてのソースから生成された完全に生成されたコードです。私はソースコードを望んでいません。私はchromeの 'inspect element'ウィンドウのような結果が欲しい。何か案は?これも可能ですか? 別のライブラリを使用する必要がありますか?

私は役に立たなかったサンプルコードを投稿しています。

webClient = new WebClient(BrowserVersion.CHROME); 
final HtmlPage page = webClient.getPage("https://www.bet365.com"); 
System.out.println(page.asXml()); 

答えて

1

あなたは(それがのように聞こえる何をしている)のウェブサイトのサーバー/データベースからすべてのデータを抽出することを意味している場合、それらのファイルが保護されているので、それはできません。あなただけのソースコードを使用する場合は

、このソリューションにHow do you Programmatically Download a Webpage in Java

+0

:あなたはまた、すべてのソースを抽出することができます

interceptingすることで、Webサーバからのリクエスト/レスポンスを返さ結果私のブラウザに表示されます。 –

+0

実際、 '.asXml()'はサーバから返されたソースではありません。これはブラウザに表示されるものと同じです。一致しない場合はバグかもしれません。 –

+0

それらはありません。私はバグとして報告しなければなりませんか? –

0

ページを試してみてください。 getWebResponse().getContentAsString()は、サーバーから返されたコンテンツを返します。

ページ。 asXml()は、JavaScriptの変更後にページのXHTMLを返します。

ページ。 save(File)は依存関係を持つページを再帰的に保存します。私はソースcode.Iがしたいchrome.Notで「要素を検査」ウィンドウのような結果が欲しい

new WebConnectionWrapper(webClient) { 

    public WebResponse getResponse(WebRequest request) throws IOException { 
       WebResponse response = super.getResponse(request); 
     if (request.getUrl().toExternalForm().contains("my_url")) { 
      String content = response.getContentAsString(); 

      // change or save content 

      WebResponseData data = new WebResponseData(content.getBytes(), 
       response.getStatusCode(), response.getStatusMessage(), response.getResponseHeaders()); 
      response = new WebResponse(data, request, response.getLoadTime()); 
     } 
     return response; 
    } 
}; 
+0

.asXml()メソッドを使用しても、別の結果が得られますが、まだ何が必要なのかはわかりません。ブラウザーで参照してください。 E.Gブラウザでは特定の単語が表示され、その結果からメソッドから取得したものは存在しません。 –

+0

[待機](http://htmlunit.sourceforge.net/faq.html#AJAXDoesNotWork)少し、または何が間違っているかの詳細を提供してほしい、うまくいけば[最小](http://htmlunit.sourceforge.net/ submitJSBugs.html)テストケース。 –

関連する問題