2012-10-22 56 views
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的一部分。用Jsoup刮

那么,有没有人知道我可以刮这个页面?

回答

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

但是,如果你需要的相对 URL你仅仅使用element.attr("href")更换element.absUrl("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