这是一个实例。如果您转到http://superior.edu.pk的源代码(Ctrl + U),您将看到没有基本URL和/或http-equi等。当您向下滚动以检查图像时,它将显示不同的URL以完成相对路径以及何时检查HTML网址(例如,搜索AdmissionSchedule.aspx),您将看到不同的URL解析相对路径。我的问题是:如何将这些相对URL作为绝对URL?我尝试过jsoup abd:hre和element.absUrl(" href");两个都给我空字符串。设置document.setBaseUri(" http://www.example.com");也没有用,因为有两个不同的URL用作基本URL,比如说。
任何帮助都会让我感激不尽。
由于
答案 0 :(得分:1)
为什么说有两个基本URL?所有相对链接都指向http://superior.edu.pk/presentation/user/
(否则不是!)。
请尝试以下代码:
//If you use an URL you haven't to especify base URL
Document doc=Jsoup.connect("http://superior.edu.pk/presentation/user/Default.aspx").get();
//If you use a file or a String you have. Base URL is http://superior.edu.pk/presentation/user/ of course
//Document doc = Jsoup.parse(Main.class.getResourceAsStream("page.htm"), "utf-8", "http://superior.edu.pk/presentation/user/");
//Only as an example. You can fetch any anchor as wou wish.
Elements links = doc.select("div.footerMaterial > a");
for (Element link : links){
String attr = link.absUrl("href");
System.out.println(attr);
}
您将正确查看所有绝对网址。从指向superior.edu.pk的相对链接获得的链接以及指向其各自域的绝对链接(www.digitallibrary.edu.pk和www.google.com)
(编辑)
您还可以测试此代码:
Element link = doc.select(".logo > a:nth-child(1) > img:nth-child(1)").first();
String attr = link.absUrl("src");
System.out.println(attr);
会给你:
http://superior.edu.pk/images/logo.jpg
哪个是对的!
解释是,相对网址为../../images/logo.jpg
http://superior.edu.pk/presentation/user/../../images/logo.jpg
,其解析为http://superior.edu.pk/images/logo.jpg
。
页面只能有一个基本网址!