2015-05-08 130 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