2016-08-08 5 views
2

私はJsoupを使ってさまざまな店舗のオンラインデータをスクラップしていますが、私がユーザーとして行っていることをプログラムで複製する方法はわかりません。手動で(ログイン後に)データを取得するには、ユーザーがa treeからポップアップするストアを選択する必要があります。Jsoup with plugin

わかりやすく、ツリーはサイトにハードコードされていませんが、コンピュータがサーバーと対話するときに対話形式で構築されます。 「ページソースを表示」で表を検索すると、エントリはありません。私がinspect the treeになったとき、私はHTMLを見て、それは "FancyTree"プラグインから来ているようです。

デベロッパーツール - ネットワークで自分のアクティビティをトラッキングするとわかるように、次のステップはURLを変更しない「GET」リクエストです。そのため、私のストアの選択方法はわかりません転送されます。

JsoupまたはJavaを一般的にプログラムでこのテーブルとやりとりする方法に関するアドバイスは非常に役に立ちます。ありがとうございます!

+0

DOMSはあまりにも動的で、最近はHTMLだけを解析して何か役に立つものが得られることを望んでいます。リモートコントロールのブラウザーであるSeleniumのようなツールを使う必要があります。そうすれば、ボタンとドロップダウンを見つけて、正しい要素を選択し、JSを正しく実行させてから、すべてが正しいときにDOMSの現在の状態をブラウザに尋ねることができます。それからあなたはjsoupでそれを解析できます。これがLinuxを使用しているサーバー側のアプリケーションであれば、xvfbを使用してすべてのヘッドレスを実行することができます(この場合は参考になります)。 – Quaternion

+0

コメントありがとうございました。 – Cory

答えて

1

Jsoupは、DOMではなく元のソースファイルのみを解析できます。 DOMを解析するには、HtmlUnitのようなものでページをレンダリングする必要があります。次に、Jsoupでhtmlコンテンツを解析できます。

// load page using HTML Unit and fire scripts 
WebClient webClient = new WebClient(); 
HtmlPage myPage = webClient.getPage(myURL); 

// convert page to generated HTML and convert to document 
doc = Jsoup.parse(myPage.asXml()); 

// do something with html content 
System.out.println(doc.html()); 

// clean up resources   
webClient.close(); 

Parsing Javascript Generated Page with Jsoupを参照してください。

+1

これは非常に役に立ちます、ありがとう! – Cory