获取以JSoup结尾的.html网址

时间:2013-02-20 15:27:50

标签: java jsoup

我正在尝试使用JSoup连接到URL。

当我使用以下代码时

Jsoup.connect("http://www.example.com/").get();
Jsoup.connect("http://www.example.com/example.html").get();

第一个调用成功,第二个调用引发异常:

Exception in thread "main" java.lang.IllegalArgumentException: Malformed URL: http://www.example.com/example.html
  at org.jsoup.helper.HttpConnection.url(HttpConnection.java:55)
  at org.jsoup.helper.HttpConnection.connect(HttpConnection.java:27)
  at org.jsoup.Jsoup.connect(Jsoup.java:73)
  at webscraper.JsoupTest.main(JsoupTest.java:259)
Caused by: java.net.MalformedURLException: no protocol: http://www.example.com/example.html
  at java.net.URL.<init>(URL.java:567)
  at java.net.URL.<init>(URL.java:464)
  at java.net.URL.<init>(URL.java:413)
  at org.jsoup.helper.HttpConnection.url(HttpConnection.java:53)
  ... 3 more

我认为它与网址中的“.html”有关。

如何使用JSoup连接到URL?

2 个答案:

答案 0 :(得分:2)

它与.html无关,你的第二个网址中有一个空格前缀。 删除空白区域,它将在我身边正常工作。

你可以使用这个tool单独将asii转换为十六进制的行代码,你会注意到第二个url在16的位置有一个冗余的char'1f'。

答案 1 :(得分:0)

我想这是因为您应该在URL中对破折号进行编码。试试这个:

String url = java.net.URLEncoder.encode("http://www.example.com/example.html", "UTF-8");
Jsoup.connect(url).get();

Doc:http://docs.oracle.com/javase/1.5.0/docs/api/java/net/URLEncoder.html