HtmlUnit を使用してサイトをナビゲートしています。ダウンロードするドキュメントのリストを含むテーブルがあります。すべてのリンクをクリックして、すべてのドキュメントを収集したい (心配しないでください。情報は公開されており、スクレイピングは禁止されていません)。
このサイトは JSF で書かれているため、ドキュメントへのリンクは実際に<a href="#"
はonclick
フォームを送信する (ただし、その前に隠しフィールドを適切な値に設定する) にあります。
私のコードは(scalaですが、それは問題ではありません):
val link = row.getFirstByXPath[HtmlElement](descriptor.documentLinkPath.get)
if (link.getAttribute("href").endsWith("#")) link.setAttribute("href", "javascript:void(0)")
val documentPage: Page = link.click()
val bytes = IOUtils.toByteArray(documentPage.getWebResponse().getContentAsStream())
ただし、問題があります。最初のドキュメントは正しくダウンロードされます。しかし、2 つ目以降は取得できません。PDF ドキュメントではなく、html ページが返されます。(コメントアウトし# -> javascript:void(0)
ても効果はありません。一部の例外を除いて爆発することがあったため、そこに入れました)
Javascript が有効になっており、最初のドキュメントで Javascript が機能するようになったということは、一般的に機能していることを意味します。ただし、次のドキュメントでは機能しません。解決方法はありますか?