JAVA url = new URL () 畸形URL异常
JAVA url = new URL () malformedURLexception
我试图构建一个从网站收集 HTML 源代码的爬虫程序,我将其保存在一个 .csv 文件中。
每当我将 link 放入
时,一切似乎都运行良好
url = new URL ("http://example.com")
但每当我尝试将 link 放入变量(本例中为 "text")时,我都会收到错误消息,告诉我出现了 malformedURLException。
这是我的代码:
String text ="";
// get the sourcecode of the link you just grabbed
url = new URL(text);
PrintWriter writer = new PrintWriter("sourcecode.txt", "UTF-8");
你的双引号有问题。
我将您的 "text" 行粘贴到 Eclipse 中并尝试保存,结果显示您的 "text" 字符串的开头有一个无效字符,因为有一个 Cp1252 编码字符。
我删除了你的第一个双引号,然后重新输入。那我运行
String text = "";
try {
URL url = new URL(text);
PrintWriter writer = new PrintWriter("sourcecode.txt", "UTF-8");
System.out.println("all good");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
它奏效了。
您的字符串中有隐藏字符。您可能从 Word 文件或在 Windows 中转换的文本文件中复制了 URL。它的开头有一个 BOM 标记。当我这样做时:
System.out.println( Arrays.toString(text.getBytes(StandardCharsets.UTF_16BE)));
这是我得到的输出:
[-2, -1, 0, 104, 0, 116, 0, 116, 0, 112, 0, 58, 0, 47, 0, 47, 0, 115, 0, 116, 0, 97, 0, 99, 0, 107, 0, 111, 0, 118, 0, 101, 0, 114, 0, 102, 0, 108, 0, 111, 0, 119, 0, 46, 0, 99, 0, 111, 0, 109, 0, 47, 0, 113, 0, 117, 0, 101, 0, 115, 0, 116, 0, 105, 0, 111, 0, 110, 0, 115, 0, 47, 0, 57, 0, 56, 0, 50, 0, 55, 0, 49, 0, 52, 0, 51, 0, 47, 0, 99, 0, 111, 0, 110, 0, 116, 0, 105, 0, 110, 0, 117, 0, 105, 0, 110, 0, 103, 0, 45, 0, 101, 0, 120, 0, 101, 0, 99, 0, 117, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 97, 0, 102, 0, 116, 0, 101, 0, 114, 0, 45, 0, 97, 0, 110, 0, 45, 0, 101, 0, 120, 0, 99, 0, 101, 0, 112, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 105, 0, 115, 0, 45, 0, 116, 0, 104, 0, 114, 0, 111, 0, 119, 0, 110, 0, 45, 0, 105, 0, 110, 0, 45, 0, 106, 0, 97, 0, 118, 0, 97]
前两个字节是unicode BOM字符。小心你从哪里得到你的字符串。如果您从 Excel 导出 CSV,并且文件仅包含 URL,请尝试仅将其导出为 ASCII。
您的文本变量中有一个特殊字符。刚刚在浏览器中尝试了您的 link,但由于这个原因它无法正常工作。
复制以下内容并重试:
String text ="";
我试图构建一个从网站收集 HTML 源代码的爬虫程序,我将其保存在一个 .csv 文件中。 每当我将 link 放入
时,一切似乎都运行良好url = new URL ("http://example.com")
但每当我尝试将 link 放入变量(本例中为 "text")时,我都会收到错误消息,告诉我出现了 malformedURLException。
这是我的代码:
String text ="";
// get the sourcecode of the link you just grabbed
url = new URL(text);
PrintWriter writer = new PrintWriter("sourcecode.txt", "UTF-8");
你的双引号有问题。
我将您的 "text" 行粘贴到 Eclipse 中并尝试保存,结果显示您的 "text" 字符串的开头有一个无效字符,因为有一个 Cp1252 编码字符。
我删除了你的第一个双引号,然后重新输入。那我运行
String text = "";
try {
URL url = new URL(text);
PrintWriter writer = new PrintWriter("sourcecode.txt", "UTF-8");
System.out.println("all good");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
它奏效了。
您的字符串中有隐藏字符。您可能从 Word 文件或在 Windows 中转换的文本文件中复制了 URL。它的开头有一个 BOM 标记。当我这样做时:
System.out.println( Arrays.toString(text.getBytes(StandardCharsets.UTF_16BE)));
这是我得到的输出:
[-2, -1, 0, 104, 0, 116, 0, 116, 0, 112, 0, 58, 0, 47, 0, 47, 0, 115, 0, 116, 0, 97, 0, 99, 0, 107, 0, 111, 0, 118, 0, 101, 0, 114, 0, 102, 0, 108, 0, 111, 0, 119, 0, 46, 0, 99, 0, 111, 0, 109, 0, 47, 0, 113, 0, 117, 0, 101, 0, 115, 0, 116, 0, 105, 0, 111, 0, 110, 0, 115, 0, 47, 0, 57, 0, 56, 0, 50, 0, 55, 0, 49, 0, 52, 0, 51, 0, 47, 0, 99, 0, 111, 0, 110, 0, 116, 0, 105, 0, 110, 0, 117, 0, 105, 0, 110, 0, 103, 0, 45, 0, 101, 0, 120, 0, 101, 0, 99, 0, 117, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 97, 0, 102, 0, 116, 0, 101, 0, 114, 0, 45, 0, 97, 0, 110, 0, 45, 0, 101, 0, 120, 0, 99, 0, 101, 0, 112, 0, 116, 0, 105, 0, 111, 0, 110, 0, 45, 0, 105, 0, 115, 0, 45, 0, 116, 0, 104, 0, 114, 0, 111, 0, 119, 0, 110, 0, 45, 0, 105, 0, 110, 0, 45, 0, 106, 0, 97, 0, 118, 0, 97]
前两个字节是unicode BOM字符。小心你从哪里得到你的字符串。如果您从 Excel 导出 CSV,并且文件仅包含 URL,请尝试仅将其导出为 ASCII。
您的文本变量中有一个特殊字符。刚刚在浏览器中尝试了您的 link,但由于这个原因它无法正常工作。
复制以下内容并重试:
String text ="";