以下是我的Java代码。我正在尝试解析html文件仅用于链接。我发送文件,并在 parseURL 下打印数组工作正常。但是当我将它返回并将其设置为parray时,突然parray全部为空。有什么想法吗?
public String[] getWebPages(Document doc) throws IOException
{
Elements pages = doc.select("a[href]").not("a[href$=gz]").not("a[href$=jar").not("a[href$=rar").not(
"a[href$=zip").not("a[href$=mdb").not("a[href$=doc").not("a[href$=docx").not("a[href$=odt").not(
"a[href$=pdf").not("a[href$=ppt").not("a[href$=pptx").not("a[href$=wks");
for (Element page : pages)
{
System.out.println("\nDownloading next page...");
String url = page.absUrl("href");
System.out.println(url);
parray = parseURL(url,page);
System.out.println(parray[0]);
System.out.println(parray[2]);
System.out.println(parray[3]);
System.out.println(parray[4]);
System.out.println(parray[5]);
System.out.println(parray[6]);
System.out.println(parray[7]);
System.out.println(parray[8]);
System.out.println(parray[9]);
}
return parray;
}
public String[] parseURL(String url, Element page)
{
Boolean boo = true;
if (url.indexOf("#") != -1)
{
System.out.println("Non-page...discarding page.");
return null;
}
for(x=0; x<500; x++)
if(url.equals(array[x]))
{
return null;
}
array[i] = url;
i++;
System.out.println(array[1]);
System.out.println(array[2]);
System.out.println(array[3]);
System.out.println(array[4]);
System.out.println(array[5]);
System.out.println(array[6]);
System.out.println(array[7]);
System.out.println(array[8]);
System.out.println(array[9]);
return array;
}
答案 0 :(得分:3)
这是因为你正在使用for循环,并且在循环内部,你获得新数据,并丢弃从循环的前一次迭代中获得的所有数据,因此大多数数据被丢弃和浪费。
考虑创建一个2D数组,或者更好的是创建List列表List<List<String>>
,这样就可以保存for循环中返回的所有结果。
即,
List<String> parseUrl(...) {
}
然后,
List<List<String>> parsedInfo = new ArrayList<List<String>>();
while (stillHavePages) {
// parse pages and add to list above
}