2016-05-09 13 views
2

Ich bin neu in Jsoup und ich habe versucht, einen kleinen Code zu erstellen, der den Namen der Elemente in einer Dampfinventur mit Jsoup erhält.Jsoup Scraping HTML dynamischen Inhalt

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; 
} 

diese Methoden zurückkehrt:

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

und ich möchte die Informationen beetwen die „h1“ Markierungen, die, wenn Sie auf einem bestimmten Fenster klicken erzeugt wird. Vielen Dank im Voraus.

+0

Sie meinen "

XYZ

" -> "XYZ"? – Exceptyon

+0

yeah, ich möchte das "XYZ", aber es wird erzeugt, wenn Sie auf ein bestimmtes Fenster klicken – Setekorrales

Antwort

2

Sie können das .select(String cssQuery) Methode:

doc.select("h1") gibt Ihnen alle h1Elements. Wenn Sie den tatsächlichen Text in diesen Tags benötigen, verwenden Sie die .text() für jeden Element. Wenn Sie ein Attribut wie class oder id Verwendung .attr(String attributeKey) auf einem Element zB:

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

gibt Ihnen "iteminfo0_item_name"

Aber wenn Sie Klicks auf einer Website ausführen müssen, können Sie das nicht tun, mit JSoup, Daher ist JSoup ein HTML-Parser und keine Browser-Alternative. Jsoup kann dynamische Inhalte nicht verarbeiten.

Aber was Sie tun können, ist, kratzen zunächst die relevanten Daten in Ihrem h1 Tags und dann eine neue .post()request senden jeweils ein ajax call

Wenn Sie lieber eine echte WebDriver wollen, haben einen Blick auf Selenium.

+0

Vielen Dank, das Problem ist, dass ich mit dynamischen Inhalten umgehen will, also denke ich, dass ich eine andere Methode als Jsoup verwenden werde – Setekorrales

0

Verwenden .text() und geben einen String, d.h .:

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; 
}