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