我用nutch 1.3抓取网站。当nutch抓取我的网站时,我在日志中看到此异常:
Malformed URL: '', skipping (java.net.MalformedURLException: no protocol:
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.apache.nutch.crawl.Generator$Selector.reduce(Generator.java:247)
at org.apache.nutch.crawl.Generator$Selector.reduce(Generator.java:109)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:463)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:411)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:216)
)
我该如何解决这个问题?帮助我。
答案 0 :(得分:2)
根据文件。 “抛出MalformedURLException表示发生了格式错误的URL。在规范字符串中找不到合法协议,或者无法解析字符串。”
这里要注意的是,当服务器关闭或路径指向丢失的文件时,不会抛出此异常。它仅在无法解析URL时发生。
错误表示无协议。并且抓取工具也看不到任何网址
格式错误的网址:'',正在跳过(java.net.MalformedURLException:无协议:
这是我遇到的有趣文章,看看http://www.symphonious.net/2007/03/29/javaneturl-or-javaneturi/
您尝试解析的确切网址是什么?
答案 1 :(得分:1)
使用regex-urlfilter.txt
和seed.txt
设置所有设置后,请尝试以下命令:
./nutch plugin protocol-file org.apache.nutch.protocol.file.File file:\\\e:\\test.html
(如果文件位于我的示例中的e:\test.htm
。
在此之前,我总是跑这个
./nutch plugin protocol-file org.apache.nutch.protocol.file.File \\\e:\test.html
并收到此错误,因为缺少协议file:
:
java.netMalformedURLException:无协议:\\ e:\ test.html
答案 2 :(得分:0)
Malformed URL: ''
表示该网址为空,而不是http://www.google.com。