Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.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从锚定标记抓取网站的href值_Java_Recursion_Web Crawler - Fatal编程技术网

使用java从锚定标记抓取网站的href值

使用java从锚定标记抓取网站的href值,java,recursion,web-crawler,Java,Recursion,Web Crawler,Baseurl=“test.com/url” 我试图从一个有test.com/url基本页面的网站的锚链接中抓取href,我递归地需要转到所有的href,获取所有achor标记值并将它们存储在一个数组中。我已经在下面实现了它,但它是一个无限循环,我无法理解为什么会发生无限循环。 href的值存储为“/jobs” 导入java.io.BufferedReader; 导入java.io.InputStreamReader; 导入java.net.URL; 导入java.util.*; 公开课考试{

Baseurl=“test.com/url” 我试图从一个有test.com/url基本页面的网站的锚链接中抓取href,我递归地需要转到所有的href,获取所有achor标记值并将它们存储在一个数组中。我已经在下面实现了它,但它是一个无限循环,我无法理解为什么会发生无限循环。 href的值存储为“/jobs”

导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.net.URL;
导入java.util.*;
公开课考试{
公共静态void main(字符串[]args){
价值(”http://www.test.com/urls");
}
公共静态int getIndexOf(字符串str、字符串c、int n){
int pos=str.indexOf(c,0);
而(n-->0和位置!=-1){
pos=str.indexOf(c,pos+1);
}
返回pos;
}
public static List=new ArrayList();
公共静态无效值(字符串urladdr){
试一试{
URL my_URL=新URL(urladdr);
System.out.println(urladdr);
BufferedReader br=新的BufferedReader(新的InputStreamReader(my_url.openStream());
字符串strTemp=“”;
while(true){
试一试{
strTemp=br.readLine();
}捕获(NullPointerException e){
br.close();
打破
}

如果(strTemp.contains(“如果您阅读
BufferedReader
/
readLine
的java文档,您将看到它说

A String containing the contents of the line, not including any line-termination 
characters, or null if the end of the stream has been reached
所以,简单地通过更改代码来测试这一点将有助于您前进

    strTemp = br.readLine();
    if (strTemp == null) {
        break;
    }


     ....
    finally {
        br.close();
    }

当您试图读取超过输入末尾的内容时,为什么会期望抛出
NullPointerException
?我确实意识到异常是毫无意义的,但我仍然有一个无限循环,仍然无法解决问题。但在这里,我并没有对字符串做任何操作。我只是重复进入另一个get请求以查找urlmayb你忘了你问的问题是什么了。同样在上面的代码中,你正在添加到一个列表中,然后每次到都再次处理整个循环。
    strTemp = br.readLine();
    if (strTemp == null) {
        break;
    }


     ....
    finally {
        br.close();
    }