Jsoup Scraping HTML动态内容

时间:2016-05-09 19:12:25

标签: java html css jsoup

我是Jsoup的新手,我一直在尝试创建一个小代码,使用Jsoup获取Steam库存中的项目名称。

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>

我希望信息来自&#34; h1&#34;单击特定窗口时生成的标签。 先感谢您。

2 个答案:

答案 0 :(得分:2)

您可以使用.select(String cssQuery)方法:

doc.select("h1")为您提供所有h1 Elements。 如果您需要这些标记中的实际文字,请为每个.text()使用Element。 如果您需要classid等属性,请.attr(String attributeKey)使用Element,例如:

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

为您提供"iteminfo0_item_name"

但是如果您需要在网站上执行点击,则无法使用JSoup执行此操作,因此JSoup是HTML解析器而不是浏览器替代方案。 Jsoup无法处理动态内容。

但您可以做的是,首先抓取h1代码中的相关数据,然后分别发送新的.post() requestajax call

如果您想要一个真正的网络驱动程序,请查看Selenium

答案 1 :(得分: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;
}