0

我需要从这个页面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 的一部分,除了主要的大一个。

那么有谁知道我怎么能刮掉这个页面?

4

1 回答 1

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"));
}

这已经为您提供了每个 pokemon 链接的绝对URL:

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)
...

但是,如果您需要相对URL,您只需替换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

于 2012-10-22T15:27:24.230 回答