Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.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 从html源代码获取链接_Java_Html - Fatal编程技术网

Java 从html源代码获取链接

Java 从html源代码获取链接,java,html,Java,Html,我有一个字符串作为html源代码。我只想从该字符串中获取链接,并将这些链接放入ArrayList中。正如您所知,我希望在之间获取一些字符串,但我希望这样做时不使用任何外部库。我如何使用使用字符串类和循环的简单算法来实现它?谢谢大家! Java正则表达式API不是实现目标的合适工具。使用其他答案中提到的高效、安全和经过良好测试的高级工具 如果您的问题涉及的是Regex API,而不是实际问题(例如学习目的),则可以使用以下代码: String html = "foo <a href='lin

我有一个字符串作为html源代码。我只想从该字符串中获取链接,并将这些链接放入ArrayList中。正如您所知,我希望在
之间获取一些字符串,但我希望这样做时不使用任何外部库。我如何使用使用字符串类和循环的简单算法来实现它?谢谢大家!

Java正则表达式API
不是实现目标的合适工具。使用其他答案中提到的高效、安全和经过良好测试的高级工具

如果您的问题涉及的是Regex API,而不是实际问题(例如学习目的),则可以使用以下代码:

String html = "foo <a href='link1'>bar</a> baz <a href='link2'>qux</a> foo";
Pattern p = Pattern.compile("<a href='(.*?)'>");
Matcher m = p.matcher(html);
while(m.find()) {
   System.out.println(m.group(0));
   System.out.println(m.group(1));
}
String html=“foo baz foo”;

Pattern p=Pattern.compile(“相反。另请参见

Java Regex API
)不是实现您的目标的合适工具。请使用其他答案中提到的高效、安全且经过良好测试的高级工具

如果您的问题涉及的是Regex API,而不是实际问题(例如学习目的),则可以使用以下代码:

String html = "foo <a href='link1'>bar</a> baz <a href='link2'>qux</a> foo";
Pattern p = Pattern.compile("<a href='(.*?)'>");
Matcher m = p.matcher(html);
while(m.find()) {
   System.out.println(m.group(0));
   System.out.println(m.group(1));
}
String html=“foo baz foo”;

Pattern p=Pattern.compile(“相反。另请参见

我找到了答案

public ArrayList<String> getLinks() {

    String link = "";

    for(int i = 0; i<url.length()-6; i++) {
        if(url.charAt(i) == 'h' && url.charAt(i+1) == 'r') {
            for(int k = i; k<url.length();k++ ){
                if(url.charAt(k) == '>'){
                    link = url.substring(i+6,k-1);
                    links.add(link);
                    // Break the loop 
                    k = url.length();
                }
            }
        }
    }
    return links;
public ArrayList getLinks(){
字符串链接=”;

对于(int i=0;i我找到了答案

public ArrayList<String> getLinks() {

    String link = "";

    for(int i = 0; i<url.length()-6; i++) {
        if(url.charAt(i) == 'h' && url.charAt(i+1) == 'r') {
            for(int k = i; k<url.length();k++ ){
                if(url.charAt(k) == '>'){
                    link = url.substring(i+6,k-1);
                    links.add(link);
                    // Break the loop 
                    k = url.length();
                }
            }
        }
    }
    return links;
public ArrayList getLinks(){
字符串链接=”;


对于(int i=0;i为什么您不想使用HTML解析库进行此操作?如果没有库,正确地执行此操作将重新发明一个非常复杂的轮子。因为这是一项作业,我的导师希望我使用简单的算法来执行此操作。简单吗?没有那么复杂,您可以在HTML中搜索
,其中如果没有
href
,您必须再次开始查找
@aphex:no,它并不简单。HTML解析并不简单。任何“简单”解决方案将与非琐碎的输入(如
@RoToRa)中断实际上它很简单。我找到了答案。尽管如此,感谢您的努力,为什么您不想为此使用HTML解析库?在没有库的情况下正确地执行此操作将重新发明一个非常复杂的轮子。因为这是一项作业,我的导师希望e使用简单的算法来实现这一点。它简单吗?它没有那么复杂,你可以在html中搜索
,在这种情况下,没有
href
,你必须再次开始寻找
@aphex:不,它不简单。html解析并不简单。任何“简单”解决方案将与非琐碎的输入(如
@RoToRa)中断实际上它很简单。我找到了答案。尽管如此,谢谢你的努力。正如我所说的问题,我不想使用任何外部库。我找到了答案。即使如此,谢谢你的回答。你在回答中所说的方法只是一种变通方法。不是一种合适的方法od…!!…你至少可以用“regex”来解决你的问题…!!(而且它不是一个外部库)实际上它不一定合适,因为我只需要你一个简单的算法。我已经解决了:这是你的电话!!…但是如果你能把我的答案给你的老师看,他肯定会感到惊讶和高兴的!!!!)正如我提出的问题,我不想使用任何外部库。我找到了答案。尽管如此,谢谢你的回答。正如你在回答中所说的,你的方法只是一种变通方法。不是一种合适的方法。你至少可以使用“regex”来解决你的问题。!!(而且它不是一个外部库)事实上,这不一定是正确的,因为我只需要你一个简单的算法。不过我已经解决了:DIts你的电话…!!…但是如果你能把我的答案给你的老师看,他肯定会感到惊讶和高兴…!!)