我使用Jsoup作为html解析器来获取此website中表格的所有详细信息。使用下面的代码我只能在第一页上获取数据。有什么建议吗?
public static void main(String[] args) { String html = "http://www.fifa.com/worldranking/rankingtable/index.html#"; try { Document doc = Jsoup.connect(html).get(); Elements tableElements = doc.select("table"); Elements tableHeaderEles = tableElements.select("thead tr th"); System.out.println("headers"); System.out.print("row"); for (int i = 0; i < tableHeaderEles.size(); i++) { System.out.print(tableHeaderEles.get(i).text() + " | "); } System.out.println(); Elements tableRowElements = tableElements.select(":not(thead) tr"); for (int i = 0; i < tableRowElements.size(); i++) { Element row = tableRowElements.get(i); System.out.print("row"); Elements rowItems = row.select("td"); for (int j = 0; j < rowItems.size(); j++) { System.out.print(rowItems.get(j).text() + " | "); } System.out.println(); } } catch (IOException e) { e.printStackTrace(); } }
答案 0 :(得分:1)
JSoup是一个HTML解析器,但查看网站是使用javascript加载表。所以你需要点击它。
您可以使用HTMLUnit或Selenium进行导航,使用JSoup来解析HTML。
我希望它有所帮助。
编辑:
在页面代码中看起来更好。我认为它可能有用:
我更改了URL的值,看看排名你可以增加(是排名的日期),重要的是页面。您可以加载增加页面参数的所有排名。然后用JSoup解析它就足够了。
例如,最后一个排名是: http://www.fifa.com/worldranking/rankingtable/gender=m/rank=237/confederation=0/page=1/_ranking_table.html
然后你可以增加参数页面= 2,然后3,...,直到7
干杯。