java - Jsoup 抓取 HTML 动态内容

标签 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>

我想要在单击特定窗口时生成的“h1”标签之间的信息。 先感谢您。

最佳答案

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

doc.select("h1") 为您提供所有 h1 元素。 如果您需要这些标签中的实际文本,请为每个 Element 使用 .text()。 如果您需要 classid 之类的属性,请在 Element 上使用 .attr(String attributeKey) 例如:

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

给你 "iteminfo0_item_name"

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

但是你可以做的是,首先在你的 h1 标签中抓取相关数据,然后发送一个新的 .post() request , 分别是 ajax call

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

关于java - Jsoup 抓取 HTML 动态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37123650/

相关文章:

html - 两个 div 排成一行,其中第一个 div 包含其他一些 div

php - 如何使用 php 验证输入字段

html - 具有相同 z-index : which element will be on top? 的绝对定位元素

html - 如何在不过度拉伸(stretch)大屏幕宽度的情况下限制 ngx-bootstrap 轮播中的高度

java - SVN 导入命令的参数过多

java - 如何检查 scala 类是否可以从 java 类分配

javascript - 让一个选择的国家工作

css - 如何在不隐藏滚动条的情况下放置右侧导航栏?

java - 组合 Java 性能

java - 如何获得该程序的格式化显示? (初学者)