我前几天问here,但最后我决定自己做一些时间问题,现在我有更多的时间来解决它:DI喜欢jSoup,但我有点儿从旧学校开始,并为自己做好了(感谢@Bakkal)。
我设法制作了这段代码,它现在运行正常,但是如果网页构造不好,它会破坏代码,例如,如果它不以http开头,代码就不会找到它,并且如果网址没有以我放入的内容之一结束,那么它将返回一个非常丑陋的地址..例如
http://www.google.com/嘿老兄怎么样 你是?很棒,在杰克吃饭
我的结果将是:
http://www.google.com/嘿老兄怎么样 你是?太棒了,吃着杰克
我愿意接受任何建议,我会恢复我的问题,之后我会发布代码
谢谢你的一切:D
File txtUrlSpecialFile = new File("pepe.txt");
FileWriter txtUrlSpecial;
txtUrlSpecial = new FileWriter(txtUrlSpecialFile);
txtUrlSpecial.write(profundidad-1);
for(int j=0;j<bigString.length()-5;j++){ //I put 5 but I can put more
if(bigString.substring(j, j+4).equals("http")){
while(bigString.charAt(j)!='"' && bigString.charAt(j)!='<'&& bigString.substring(j, j)!="'"){
txtUrlSpecial.write(bigString.charAt(j));
j++;
}
txtUrlSpecial.write(SingletonFunction.getNewLine());
}
}
txtUrlSpecial.close();
答案 0 :(得分:2)
如果我理解正确,那么您正试图从两个属性(例如“href”)和文本中尝试从HTML文件中提取URL。
我告诉你,你的要求是不可能的。例如,从以下文本中提取应该:
Go to the URL http://example.com/ this and that. And if that doesn't work,
I recommend that you go read the http specification.
“this and that”应该是URL的一部分吗?你的软件应该如何解决这个问题呢?如果该文档的作者与您的启发式说法相反,该怎么办?那么“http规范”......显然不是一个URL。
这是另一个更微妙的例子:
First, go to the URL http://example.com/index.html.
Then click on the "login" link.
您的软件是否应该提取“http://example.com/index.html”。还是“http://example.com/index.html”?根据URL规范,两者都是有效的URL。你的软件可能会剥离最后的“。”因为它最有可能是标点符号,但可能错误。
我的建议:
答案 1 :(得分:0)
John Gruber有一个很好的正则表达式,用于查找纯文本的URL:请参阅An Improved Liberal, Accurate Regex Pattern for Matching URLs
总是存在歧义,但约翰的正则表达式在现实生活中的表现非常出色。