簡體   English   中英

Java / Jsoup-HTML元素的ID隨每次刷新而變化

[英]Java/Jsoup - HTML element's ID changes with each refesh

我有一段代碼,可用來使用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的末尾附加一個隨機數。

是否故意這樣做是為了防止人們抓取數據? 如果是這樣,解決該問題的最佳方法(如果有)是什么?

第一件事: 您不應該抓取那些不同意您網站的網站。

如果您覺得自己的抓圖是合法的,那么我會在html代碼中尋找保持穩定的內容。 它不一定是id。 類名經常以相似和獨特的方式使用。

在您描述的情況下,聽起來好像id的基本名稱保持穩定。 因此,您可以這樣做:

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

這將選擇第一個具有id屬性以“ baseID”開頭的元素。 在JSoup中查找CSS選擇器以了解更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM