im是爬网程序4j的新手。我爬了一个网站到一定的深度,找到了我搜索的内容。我现在想做的是追溯我的脚步,找出我是如何登上这一页的。我需要一个链接列表,这些链接将我引导到我要查找的内容所在的页面。
我的尝试是改变爬虫中的访问方法
@Override
public void visit(Page page) {
String url = page.getWebURL().getURL();
// condition for content found
boolean contentFound = false;
// compute 'content found' here
if (contentFound) {
System.out.println(page.getWebURL().getParentUrl());
getMyController().shutdown();
}
}
这只会给我一个父url的字符串。
page.getWebURL().getParentDocid();
只获取父级的文档id,但如何查找此页面的父级?
谢谢!
Crawler4J似乎没有以方便的方式提供它以前访问过的URL。最好的做法可能是在访问它们时将它们存储在从URL到父母的Map<String,String>
中:
parentMap.put(url, page.getWebURL().getParentUrl());
然后,为了找到完整的路径,你可以沿着地图条目一个接一个地追踪你的路,例如:
List<String> path = new ArrayList<String>();
do {
path.add(url);
url = parentMap.get(url);
} while(url != null);