2015-05-08 131 views
0

我一直在尋找jsoup頁面,但我所能做的只是從url中提取標題等......但我需要完全絕對的url地址。我想將它存儲在某個地方並稍後使用它。JSOUP從html中提取絕對網址

<div class="link-block container"> 
       <a href="/what-to-do/11636002" rel="nofollow" 
         title="unique abilities" class="just-link"> 
       </a> 
</div> 

正如我所說的,我試過String absHref = link.attr("abs:href"),但它給我的「稱號」的一部分從代碼。我做錯了什麼?請給我一些建議。

+0

向我們展示您的代碼實現。 – Manish

+0

爲了從它的某個部分獲得絕對網址,你需要使用正則表達式http://stackoverflow.com/questions/29326901/converting-window-openhyperlink-javascript-code-to-pure-absolute-url-with-java – JavaFan

+0

我發現很簡單的方法:URL baseUrl =新的URL(「我的基地網址」); \t \t URL url = new URL(baseUrl,「/ what-to-do/11636002」);它工作正常,因爲我在最後得到了一個絕對的鏈接。現在,告訴我們如何提取「/ what-to-do/11636002」部分,例如使用jsoup? – edinson

回答

0

你可以這樣說:

String myHtml = "<div class=\"link-block container\">\n" 
       + " <a href=\"/what-to-do/11636002\" rel=\"nofollow\" title=\"unique abilities\" class=\"just-link\">\n" 
       + " </a>\n" 
       + "</div>"; 

Document doc = Jsoup.parseBodyFragment(myHtml, "http://your.baseurl"); 
Element e = doc.select("a").first(); 

System.out.println(e.attr("abs:href")); 

打印:

http://your.baseurl/what-to-do/11636002 

如果你想獲得的所有a元素是相似的,這樣做:

Elements elements = doc.select("a[href*=/what-to-do/"); 
for (Element e: elements) { 
    System.out.println(e.attr("abs:href")); 
} 

這會讓你全部ahref包含「/ what-to-do /」。

+0

問題是我不知道如何正確地將這部分放到我的變量中(例如myHtml)。這是我的問題。 – edinson

+0

@edinson從哪裏得到它?如果你有myHtml作爲字符串,那麼你應該解析它,如我的答案。如果它來自URL,使用'Jsoup.connect(yourUrl).get();'或者你的意思是別的嗎?這不是很清楚。 – JonasCz

+0

我有一個完整的HTML網站。從整個網站的代碼中,我需要提取「/ What-to-do/11636002」部分。所以它不是代碼中唯一的url。 – edinson