我正在尝试使用java获取基本URL。我在我的代码中使用了jtidy解析器来获取标题。我正在使用jtidy正确获取标题,但我没有从给定的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/"
作为基本网址,从第二个字符串中,我希望"http://www.complex.com/"
作为基本网址。
我正在使用代码:
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
,但是请告诉我如何从上面的网址获取基本网址?
答案 0 :(得分:23)
尝试使用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;
答案 1 :(得分:4)
您使用java.net.URL类来解析相对URL。
对于第一种情况:从路径中删除文件名:
new URL(new URL(s1), ".").toString()
对于第二种情况:设置根路径:
new URL(new URL(s2), "/").toString()