我正在运行crawler4j来查找一百万个URL的状态(http响应)代码。我没有设置任何过滤器来过滤掉要处理的 URL。
我得到了 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意外状态代码onContentFetchErroronUnhandledException等。
请注意,由于某种原因,调用了这些方法并且未处理页面,因此再次将其添加为种子应该不会改变问题......
无论如何,最新版本的crawler4j可以更好地处理许多页面,因此只需升级到v4.1(当前)或更高版本,您就可以抓取更多页面。