我正在运行crawler4j来查找一百万个URL的状态(http响应)代码。
我尚未设置任何过滤器来过滤出要处理的URL。
对于90%的URL,我得到了正确的响应,但是输出中缺少10%。
它们甚至不会出现在Webcrawler扩展类的handlePageStatusCode()方法中。
由于各种问题,可能未对它们进行处理。
是否有可能找到那些缺失的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/

10-09 03:25