java - 如何使用java从给定的url中获取基本url

标签 java jtidy base-url

我正在尝试使用 java 获取基本 URL。我在我的代码中使用了 jtidy 解析器来获取标题。我正在使用 jtidy 正确获取标题,但我没有从给定的 URL 获取基本 url。

我有一些 URL 作为输入:

String s1 = "http://staff.unak.is/andy/GameProgramming0910/new_page_2.htm";
String s2 = "http://www.complex.com/pop-culture/2011/04/10-hottest-women-in-fast-and-furious-movies";

从第一个字符串中,我想获取 "http://staff.unak.is/andy/GameProgramming0910/" 作为基本 URL,从第二个字符串中,我想要 “http://www.complex.com/” 作为基本 URL。

我正在使用代码:

URL url = new URL(s1);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream in = conn.getInputStream();
Document doc = new Tidy().parseDOM(in, null);
String titleText = doc.getElementsByTagName("title").item(0).getFirstChild()
.getNodeValue();

我正在获取 titletext,但请告诉我如何从上面给定的 URL 获取基本 URL?

最佳答案

尝试使用 java.net.URL 类,它将帮助您:

对于第二种情况,它更容易,你可以使用新的 URL(s2).getHost();

对于第一种情况,您可以获取主机并使用 getFile() 方法,并删除最后一个斜杠 ("/") 之后的字符串。类似于:(代码未测试)

URL url = new URL(s1);
String path = url.getFile().substring(0, url.getFile().lastIndexOf('/'));
String base = url.getProtocol() + "://" + url.getHost() + path;

关于java - 如何使用java从给定的url中获取基本url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6013628/

相关文章:

javascript - 如何更正 NginX 反向代理配置中的 Meteor base-url?

Java/Apache Velocity date.format 给出错误的年份

java - 以与顶部栏后退按钮相同的方式处理 SettingsActivity onBackpressed()

java - 在程序运行之间存储数据 Java

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

java - java中从网页读取<TITLE>标签的问题

dom - 解析从 JTidy 返回的 DOM 以查找特定的 HTML 元素

java - 我可以配置 JTidy 来忽略某些错误和警告吗?

url - 如何在 Web API Controller 中获取基本 URL?

asp.net-core - 如何在不访问请求的情况下获取基本网址