我在生产中有一个搜索引擎,可提供大约 700 000 个 url。爬行是使用 Scrapy 完成的,所有蜘蛛都使用 DeltaFetch 进行调度,以便每天获取新链接。
我面临的困难是处理断开的链接。
我很难找到一种定期扫描和删除断开链接的好方法。我在考虑几个解决方案:
您有任何建议/最佳实践来解决这个问题吗?
非常感谢。
编辑:我忘了给出一个精确度:我希望“验证”那些 70 万个网址,而不是抓取它们。实际上,那 70 万个 url 是大约 250 万个域的爬网结果。
您可以编写一个小脚本来检查返回的 http 状态,如下所示:
for url in urls:
try:
urllib2.urlopen(url)
except urllib2.HTTPError, e:
# Do something when request fails
print e.code
Run Code Online (Sandbox Code Playgroud)
这与您的第一点相同。您还可以运行此异步以优化运行 700k 链接所需的时间。