2

我正在尝试从各种网站获取数据。在堆栈溢出搜索后,我正在使用 crawler4j,正如许多人所建议的那样。以下是我的理解/设计:

 1. Get sitemap.xml from robots.txt.
 2. If sitemap.xml is not available in robots.txt, look for sitemap.xml directly.  
 3. Now, get the list of all URL's from sitemap.xml 
 4. Now, fetch the content for all above URL's
 5. If sitemap.xml is also not available, then scan entire website.

现在,请您告诉我,crawler4J 可以执行步骤 1、2 和 3 吗?请建议任何更好的设计可用(假设没有可用的提要)如果可以,请指导我如何做。

谢谢文卡特

4

2 回答 2

3

Crawler4J 无法执行步骤 1,2 和 3,但它在步骤 4 和 5 中执行得非常好。我的建议是使用 Java HTTP 客户端,例如来自Http Components的客户端 来获取站点地图。使用任何 Java XML 解析器解析 XML 并将 URL 添加到集合中。然后使用列表填充您的 crawler4j 种子:

for(String url : sitemapsUrl){
 controller.addSeed(url);
}
controller.start(YourCrawler, nbthreads);
于 2013-02-14T08:44:45.463 回答
1

我从来没有使用过 crawler4j,所以持保留意见:我认为它可以由爬虫完成,但看起来你必须修改一些代码。具体可以看一下RobotstxtParser.javaandHostDirectives.java。您必须修改解析器以提取站点地图并在指令中创建一个新字段以返回sitemap.xml. 如果没有从 sitemap.txt 返回指令,则可以在 fetcher 中完成第 3 步。

但是,我不确定您通过检查sitemap.txt: 获得了什么,除非您正在寻找特定的东西,否则这似乎是一件无用的事情。

于 2012-02-26T16:43:21.997 回答