我的網站的時候,我試圖提取「今天的比賽」表的鏈接HTML代碼是不同的。解析爲何使用Jsoup比使用本網站<a href="http://www.flashscore.com/nhl/" rel="nofollow noreferrer">http://www.flashscore.com/nhl/</a>上的瀏覽器
我用下面的代碼嘗試,但它不工作,你能指出其中的錯誤是什麼?
final Document page = Jsoup
.connect("http://d.flashscore.com/x/feed/t_4_200_G2Op923t_1_en_1")
.cookie("_ga","GA1.2.47011772.1485726144")
.referrer("http://d.flashscore.com/x/feed/proxy-local")
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36")
.header("X-Fsign", "SW9D1eZo")
.header("X-GeoIP", "1")
.header("X-Requested-With", "XMLHttpRequest")
.header("Accept" , "*/*")
.get();
for (Element game : page.select("table.hockey tr")) {
Elements links = game.getElementsByClass("tr-first stage-finished");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
}
}
要嘗試修復它,我開始調試它。它顯示我們得到的頁面(如果我們正在得到一種奇怪的HTML)。之後,調試顯示for循環甚至沒有啓動。我試圖將page.select(「」)部分更改爲不同的部分(如getElementByAttribute等),但我剛剛開始學習網頁抓取,因此我需要熟悉這些方法來瀏覽文檔。我應該如何提取這些數據?
Hi @exoddues,非常感謝你的解決方案,它的作用就像魅力。你能告訴我怎麼可能只過濾掉那些有今天約會的人?所以我們說今天的日期是變量'String date'。我想我應該使用'.filter()'。 –
乍一看,'今日比賽'被放置在ID爲「fscountry」的div中。一種方式可能是例如做一個過濾器,獲取ID爲「fscountry」的div內的tr元素。嘗試使用,而不是前兩個。findElement調用使用類似.findElement(By.id(「fscountry」))。findElements(By.tagName(「tr」) – exoddus
嗨@exoddus,這是一個很好的提示。「fscountry」它沒有工作,但與「fs」如果你檢查te元素,你可以看到爲什麼在'今日比賽'表中總是有兩個元素具有相同的id(兩行,上面的主隊,下面的Away隊),我改變了這樣的事情: ... .collections(toSet())「,所以我只有一次相同的ID。我不知道這是否是最好的解決方案,但它的工作原理。 –