我正在运行 crawler4j 来查找一百万个 URL 的状态(http 响应)代码。
我没有设置任何过滤器来过滤掉要处理的网址。
我对 90% 的 URL 得到了正确的响应,但输出中缺少 10%。
它们甚至没有出现在 Webcrawler 扩展类的 handlePageStatusCode() 方法中。
可能由于各种问题,它们未被处理。
是否可以找到那些丢失的 URL 来重新处理?
我们能否改进抓取过程以不遗漏任何 URL?
最佳答案
是的,我们有!
请使用最新版本的Crawler4j,因为我添加了很多方法来捕获不同类型的异常。
现在,当您扩展 WebCrawler 时,只需覆盖许多您可以覆盖的方法: https://github.com/yasserg/crawler4j/blob/master/src/main/java/edu/uci/ics/crawler4j/crawler/WebCrawler.java
例如像下面这样: onPageBiggerThanMaxSize onUnexpectedStatusCode onContentFetchError 错误 onUnhandledException异常 等等
请注意,调用了这些方法并且页面由于某种原因未被处理,因此再次将其添加为种子不应改变问题...
无论如何,最新版本的 crawler4j 可以更好地处理许多页面,因此只需升级到 v4.1(当前)或更高版本,您就可以抓取更多页面。
关于java - Crawler4j - 许多 URL 被丢弃/未处理(输出中丢失),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810697/