2012-10-22 96 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