我最近对网络爬虫感兴趣,但有一点对我来说并不是很清楚。想象一下,一个简单的抓取工具可以获取页面,从中提取链接并将其排入队列,以便以相同的方式进行后续处理。内容协商是否被破坏?
当某些链接不会导致另一个页面,而是某些资产或其他类型的静态文件,抓取工具如何处理这种情况?它会如何知道?它可能不想下载这种可能的大型二进制数据,甚至不需要xml或json文件。谈判内容是如何落入这个的?
我怎么看内容协商应该工作是在Web服务器上的一面,当我发出example.com/foo.png
与Accept: text/html
请求应该给我回一个HTML响应或Bad Request状态,如果它不能满足我的要求,其他什么都可以接受的,但这不是它在现实生活中的作用。即使我告诉它,我仍然会用Content-Type: image/png
发送二进制数据,我只接受text/html
。为什么Web服务器像这样工作,而不是强迫我要求的正确回应?
内容协商的实施是否中断或者应用程序有责任正确实施它?
真实抓取工具是如何工作的?提前发送HEAD请求以检查链接的另一端看起来是不切实际的资源浪费。