2

我正在尝试使用 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

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

如何使用 JSoup 连接到 URL?

4

2 回答 2

2

它与 .html 无关,您的第二个 url 中有一个空格前缀。删除空白空间,它会在我身边正常工作。

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

于 2013-02-20T15:43:28.127 回答
0

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

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

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

于 2013-02-20T15:36:21.660 回答