Java 如何从下面的编码返回url列表
如标题所示,如何返回(a href)引用下的URL列表并将其显示在文本文件中?下面的代码返回一个网站的html表单Java 如何从下面的编码返回url列表,java,url,Java,Url,如标题所示,如何返回(a href)引用下的URL列表并将其显示在文本文件中?下面的代码返回一个网站的html表单 import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; public class Main { public static void main(String[] args) { try { URL my_url =
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class Main {
public static void main(String[] args) {
try {
URL my_url = new URL("http://www.placeofjo.blogspot.com/");
BufferedReader br = new BufferedReader(
new InputStreamReader(my_url.openStream()));
String strTemp = "";
while(null != (strTemp = br.readLine())){
System.out.println(strTemp);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
听起来你想使用一个HTML解析库,而不是自己去解析HTML。HtmlUnit代码将非常简单:
final WebClient webClient = new WebClient();
webClient.setJavaScriptEnabled(false);
final HtmlPage page = webClient.getPage("http://www.placeofjo.blogspot.com/");
// Then iterate through
for (DomElement element : page.getElementsByTagName("a")){
String link = ((HtmlAnchor)element).getHrefAttribute();
System.out.println(link);
}
给出以下输出:
http://www.twitter.com/jozefinfin/
http://www.facebook.com/jozefinfin/
http://placeofjo.blogspot.com/2008_08_01_archive.html
... etc etc
http://placeofjo.blogspot.com/2011_02_01_archive.html
http://endlessdance.blogspot.com
http://blogskins.com/me/aaaaaa
http://weheartit.com
听起来你想使用一个HTML解析库,而不是自己去解析HTML。HtmlUnit代码将非常简单:
final WebClient webClient = new WebClient();
webClient.setJavaScriptEnabled(false);
final HtmlPage page = webClient.getPage("http://www.placeofjo.blogspot.com/");
// Then iterate through
for (DomElement element : page.getElementsByTagName("a")){
String link = ((HtmlAnchor)element).getHrefAttribute();
System.out.println(link);
}
给出以下输出:
http://www.twitter.com/jozefinfin/
http://www.facebook.com/jozefinfin/
http://placeofjo.blogspot.com/2008_08_01_archive.html
... etc etc
http://placeofjo.blogspot.com/2011_02_01_archive.html
http://endlessdance.blogspot.com
http://blogskins.com/me/aaaaaa
http://weheartit.com
您可能希望尝试使用解析HTML并从页面收集所有锚定标记。您可能希望尝试使用解析HTML并从页面收集所有锚定标记。编辑(2) 如果您正在寻找一个健壮的解决方案(或者可能需要扩展到解析更多HTML),那么请查看此处的其他答案之一。如果你只需要一个快速和肮脏的一次性解决方案,你可以考虑正则表达式。
如果我理解正确,您希望提取所有
的href
值。差不多
String regex = "<a\s.*href=['\"](.*?)['\"].*?>";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(text);
while (m.find())
{
String urlStr = m.group();
}
String regex=“编辑(2)
如果你正在寻找一个健壮的解决方案(或者可能需要扩展到解析更多的HTML),那么在这里检查一个其他的答案。如果你只需要一个快速和肮脏的一次性解决方案,你可以考虑正则表达式。
如果我理解正确,您希望提取所有的href
值
String regex = "<a\s.*href=['\"](.*?)['\"].*?>";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(text);
while (m.find())
{
String urlStr = m.group();
}
String regex=“您无法使用regex解析HTML。请参阅顶部的答案,以获得良好的解释。我可以看到这一点通向井,如果您所要查找的是href=“something”
,则正则表达式就可以了。发问者正在寻找结构良好的锚元素中的所有href=“something”
,考虑到可能的非标准间距和其他边缘情况。不像最初看起来那么简单。例如,发布的当前版本将在上失败“>@mjg123-你说得对,如果你的应用程序需要一个成熟的HTML刮刀/解析器,那么正则表达式太脆弱,无法正常工作。然而,如果您有一个专门的案例,或者可以使用有限的已知HTML,那么HTML解析器可能就太过了。我认为这两种方法都有自己的位置——正则表达式用于简单、快速、一次性的工作。你不能用正则表达式解析HTML。请参阅顶部的答案,以获得良好的解释。我可以看到这一点通向井,如果您所要查找的是href=“something”
,则正则表达式就可以了。发问者正在寻找结构良好的锚元素中的所有href=“something”
,考虑到可能的非标准间距和其他边缘情况。不像最初看起来那么简单。例如,发布的当前版本将在上失败“>@mjg123-你说得对,如果你的应用程序需要一个成熟的HTML刮刀/解析器,那么正则表达式太脆弱,无法正常工作。然而,如果您有一个专门的案例,或者可以使用有限的已知HTML,那么HTML解析器可能就太过了。我认为这两种方法都有自己的位置-正则表达式用于简单、快速、一次性的工作。您好,感谢您的回复和关注..我目前正在测试您的代码..但是我遇到了这个错误(HTML锚无法解析为类型)。。如果您能指导我,我将不胜感激。^我在这里简要测试了代码HtmlAnchor
在最新的htmlunit发行版(2.8)中,您可以从OK下载。我修改了我的答案-只需关闭javascript。您好,感谢您的回复和关注。我目前正在测试您的代码。但是我遇到了这个错误(HTML锚无法解析为类型)。。如果您能指导我,我将不胜感激。^我在这里简要测试了代码HtmlAnchor
是最新的htmlunit版本(2.8),您可以从OK下载。我修改了我的答案,只是需要关闭javascript。