我已经整理了一个非常简单的爬行引擎,它可以很好地工作,并且大多数情况下避免卡在循环循环陷阱中。 (即,页面A链接到页面B和页面B链接到页面A)。
它在这个循环中遇到的唯一一次是当两个页面都使用cachebuster查询字符串相互链接时,基本上每个刷新的每个链接上都有一个唯一的查询字符串。
这会导致页面总是看起来像爬网程序的新页面,并且爬虫在两个页面之间移动。
除了在两个页面之间的N次反弹之后突然爆发,唯一的区别是查询字符串(我认为这不是一个非常好的方法),是否还有其他方法来检测和突破这些陷阱...?
答案 0 :(得分:0)
也许他们只是会话ID,而不是“缓存破坏者”--- Cookie会有所帮助
几年前,我不得不处理类似的问题,我们找到了一个简单的解决方案:在您的网络客户端中启用Cookie。以下是为什么这有助于我们的解释:
确实,某些网址(特别是广告图片)旨在“破坏缓存”。但是,我们没有找到它们的循环引用。
许多网址会向网址添加随机字符串,以便识别访问者。没有打算破解缓存 - 这只是他们的方法的一个副作用,为每个访问者获得一个唯一的“会话标识符”。
当然,用cookie识别访客要好得多。事实上,大多数使用会话标识符的动态网站都会首先尝试使用Cookie。只有当他们发现Web客户端不支持它们时,网站才会回退到将URL添加到URL。
底线:
对我们来说,这解决了这个问题。