Java / Jsoup - HTML元素的ID随每个refesh而变化

时间:2015-12-03 17:34:13

标签: java html jsoup

我有一段代码用于使用Jsoup库从各种网站获取数据。

Connection conn = Jsoup.connect(url);
try {
    doc = conn.get();
    Element element = doc.getElementById(elementId);
    System.out.println(element.html());
} catch (IOException e) {
    e.printStackTrace();
}

该代码适用于大多数网站,但是我注意到,对于我正在搜索的其中一个网站,此代码不起作用,因为感兴趣的HTML元素的ID随着每次刷新页面而变化,似乎是在id的末尾附加一个随机数。

这是否有目的地阻止人们抓取数据?如果是这样,绕过它的最佳方法是什么(如果有的话)?

1 个答案:

答案 0 :(得分:1)

第一件事:你不应该抓住那些不同意你的网站。

如果您觉得您的抓取是合法的,我会在html代码中查找保持稳定的内容。它不一定是id。类名经常以类似和独特的方式使用。

在您描述的情况下,听起来好像id的基本名称保持稳定。所以你可以这样做:

Element element = doc.select(*[id^=baseID]).first();

这将选择第一个具有以“baseID”开头的id属性的Element。寻找CSS selectors in JSoup以了解更多信息。