使用java从锚定标记抓取网站的href值
Baseurl=“test.com/url” 我试图从一个有test.com/url基本页面的网站的锚链接中抓取href,我递归地需要转到所有的href,获取所有achor标记值并将它们存储在一个数组中。我已经在下面实现了它,但它是一个无限循环,我无法理解为什么会发生无限循环。 href的值存储为“/jobs”使用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.*; 公开课考试{
导入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();
}