2016-05-09 26 views
2

私はJsoupを使い慣れていません。Jsoupを使用して蒸気在庫内のアイテムの名前を取得する小さなコードを作成しようとしています。Jsoup HTML動的コンテンツをスクラップ

public Element getItem(String user) throws IOException{ 
    Document doc; 

    doc = Jsoup.connect("http://steamcommunity.com/id/"+user+"/inventory").get(); 
    Element element = doc.getElementsByClass("hover_item_name").first(); 
    return element; 
} 

このメソッドが返す:

<h1 class="hover_item_name" id="iteminfo0_item_name"></h1> 

と私はあなたが特定のウィンドウをクリックしたときに生成される「H1」のラベルbeetwen情報が欲しいです。 ありがとうございます。

doc.select("h1")はあなたにすべてのh1Elementsいます:

+0

"

XYZ

" - > "XYZ"を意味しますか? – Exceptyon

+0

ええ、私はその "XYZ"が、特定のウィンドウをクリックしたときに生成されます。 – Setekorrales

答えて

2

あなたが.select(String cssQuery)メソッドを使用することができます。 これらのタグに実際のテキストが必要な場合は、それぞれに.text()を使用してください。 あなたはElement例えば上classまたはid使用.attr(String attributeKey)のような属性が必要な場合:あなたはJSoupでそれを行うことができないウェブサイト上でクリックを実行する必要がある場合

doc.getElementsByClass("hover_item_name").first().attr("id") 

は、あなたに"iteminfo0_item_name"

を与えるが、 JSoupはHTMLパーサであり、ブラウザの代替ではありません。 Jsoupは動的コンテンツを処理できません。

しかし、何であるか、あなたが行うことができ、最初にあなたのh1タグに関連するデータをこすり、あなたはむしろ本当のwebdriverをしたい場合は、新しい.post()request、それぞれajax call

を送って、Seleniumを見ています。

+0

ありがとう、問題は動的コンテンツを処理したいので、Jsoupとは別の別のメソッドを使用していると思います – Setekorrales

0

使用.text()Stringを返す、すなわち:

public String getItem(String user) throws IOException{ 
    Document doc; 
    doc = Jsoup.connect("http://steamcommunity.com/id/"+user+"/inventory").get(); 
    Element element = doc.getElementsByClass("hover_item_name").first(); 
    String text = element.text(); 
    return text; 
} 
関連する問題