Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从下面的编码返回url列表_Java_Url - Fatal编程技术网

Java 如何从下面的编码返回url列表

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 =

如标题所示,如何返回(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 = 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。