用Jsoup刮痧

时间:2012-10-22 11:13:28

标签: java jsoup

我需要从这个页面收集数据http://bulbapedia.bulbagarden.net/wiki/List_of_Pok%C3%A9mon_by_National_Pok%C3%A9dex_number,但问题是我需要的是每个小宠物的链接,所以对于第一个,“/ wiki / Bulbasaur_(Pok%C3%A9mon)”(所有我需要做的就是在前面添加“bulbapedia.bulbagarden.net”,但我不知道如何获得所有这些。我已经看到了一些例子,但我没有看到任何可以帮助我的东西。那些我已经看到通过获取div中的数据来使用循环但这些链接似乎不是除了主要的大的任何div的一部分。

所以有人知道我怎么能刮掉这个页面吗?

1 个答案:

答案 0 :(得分:1)

这是一个解决方案:

Document doc = Jsoup.connect("http://bulbapedia.bulbagarden.net/wiki/List_of_Pok%C3%A9mon_by_National_Pok%C3%A9dex_number").get();


for( Element element : doc.select("td > span.plainlinks > a") )
{
    /* 
     * You can do further things here - for this example we 
     * only print the absolut url of each link.
     */
    System.out.println(element.absUrl("href"));
}

这已经为您提供了每个小精灵链接的绝对网址:

http://bulbapedia.bulbagarden.net/wiki/Bulbasaur_(Pok%C3%A9mon)
http://bulbapedia.bulbagarden.net/wiki/Ivysaur_(Pok%C3%A9mon)
http://bulbapedia.bulbagarden.net/wiki/Venusaur_(Pok%C3%A9mon)
http://bulbapedia.bulbagarden.net/wiki/Charmander_(Pok%C3%A9mon)
...

但是,如果您需要相对网址,则只需将element.absUrl("href")替换为element.attr("href")

结果:

/wiki/Bulbasaur_(Pok%C3%A9mon)
/wiki/Ivysaur_(Pok%C3%A9mon)
/wiki/Venusaur_(Pok%C3%A9mon)
/wiki/Charmander_(Pok%C3%A9mon)
...

有关此内容的说明,请参阅:Jsoup Selector API。这里可以找到一些很好的例子:Jsoup Codebook