我正在创建一个网络剪贴簿,它会从同一个域中通过多个URL。我有一个带有URLS列表的文本文件。我使用了readAllBytes方法,因此我可以读取文本文件并将其存储在String中。 这是我运行程序时遇到的错误。我不确定它在网址中导致非法字符的原因。
Illegal character in URL
at sun.net.www.protocol.http.HttpURLConnection.checkURL(HttpURLConnection.java:850)
at sun.net.www.protocol.http.HttpURLConnection.<init>(HttpURLConnection.java:857)
at sun.net.www.protocol.http.Handler.openConnection(Handler.java:62)
at sun.net.www.protocol.http.Handler.openConnection(Handler.java:57)
at java.net.URL.openConnection(URL.java:979)
at com.web.DogsDataExtractorV.GetAllDogsData(DogsDataExtractorV.java:74)
at com.web.DogsDataExtractorV.main(DogsDataExtractorV.java:115)
这是我的代码中我将文本文件存储在字符串中的部分,也是我为url指定字符串的地方,
try {
Path file_Path = Paths.get("/home/c/cerda/DogsData/upload", "dog-links.txt");
byte[] link_list = Files.readAllBytes(file_Path);
String Link_String = new String(link_list);
System.out.println(Link_String);
GetAllDogsData(Link_String);
}catch (Exception e) {
System.out.println(e);
这是我设置在哪里查看信息并将数据保存到的代码的一部分。
Document doc = Jsoup.parse(file, null);
Elements resulCharact = doc.select(("span[class=characteristic item-trigger-title]"));
for (Element link : resulCharact ) {
writeToFile("../upload/characteristic.txt", link.text()+ "\n");
}
Elements resulRating = doc.select(("span[class=star-block stars-column]"));
for (Element ratings : resulRating) {
writeToFile("../upload/ratings.txt", ratings.text()+ "\n");
}
文本文件示例
http://dogtime.com/dog-breeds/boerboel
http://dogtime.com/dog-breeds/bolognese
http://dogtime.com/dog-breeds/border-collie
http://dogtime.com/dog-breeds/border-terrier
http://dogtime.com/dog-breeds/borzoi
http://dogtime.com/dog-breeds/boston-terrier
http://dogtime.com/dog-breeds/bouvier-des-flandres
http://dogtime.com/dog-breeds/boxer
http://dogtime.com/dog-breeds/boykin-spaniel
http://dogtime.com/dog-breeds/bracco-italiano
http://dogtime.com/dog-breeds/briard
代码适用于一个网址。如果有人可以帮助你,谢谢你。
答案 0 :(得分:0)
你得到的例外情况清楚地说明问题 - Illegal character in URL
。这意味着您将非URL的内容传递给URL.openConnection
。我怀疑这是因为您正在阅读文件的方式 - 为什么要将\\A
作为分隔符传递?如果其中有多个URL,则会导致Scanner
一次性返回所有URL。这就是为什么当文件中只有一个URL时它才能正常工作。
使用分隔文件中URL的实际字符,逐一阅读。