我已经建立了一个多线程的网络爬虫,使请求从相应的服务器获取网页。因为它是多线程的,所以会使服务器不堪重负。由于哪个服务器可以阻止爬虫(礼貌)。
我只想添加功能的结果请求之间的最小延迟到相同的服务器。是否可以将来自每个服务器(域)的robot.txt的最小延迟存储到HashMap中,并将其与向该特定服务器发出的请求的最后时间进行比较?
如果在robot.txt中没有指定延迟,该怎么办?
发布于 2012-10-10 18:57:58
事实上的标准robots.txt文件格式并没有指定请求之间的延迟。它是一个非标准的扩展。
没有"Crawl-delay“指令并不意味着您可以随心所欲地敲打服务器。
是否可以将来自每个服务器(域)的robot.txt的最小延迟存储到HashMap中,并将其与向该特定服务器发出的请求的最后时间进行比较?
这是不够的。对于robots.txt不使用非标准指令的情况,还需要实现两次请求之间的最短时间。你也应该尊重503响应中的“Retry After”头。
理想情况下,您还应该注意响应请求所用的时间。响应缓慢是拥塞或服务器过载的潜在指示,如果您的爬虫被认为是拥塞的原因,则站点管理员更有可能阻止爬虫。
发布于 2012-10-15 17:20:07
我使用0.5秒作为我的网络爬虫的延迟。使用它作为默认值,如果指定了它,您应该使用它。
https://stackoverflow.com/questions/12816998
复制相似问题