我最近對網絡爬蟲感興趣,但有一點對我來說並不是很清楚。想象一下,一個簡單的抓取工具可以獲取頁面,從中提取鏈接並將其排入隊列,以便以相同的方式進行後續處理。內容協商是否被破壞?
當某些鏈接不會導致另一個頁面,而是某些資產或其他類型的靜態文件,抓取工具如何處理這種情況?它會如何知道?它可能不想下載這種可能的大型二進制數據,甚至不需要xml或json文件。談判內容是如何落入這個的?
我怎麼看內容協商應該工作是在Web服務器上的一面,當我發出example.com/foo.png
與Accept: text/html
請求應該給我回一個HTML響應或Bad Request狀態,如果它不能滿足我的要求,其他什麼都可以接受的,但這不是它在現實生活中的作用。即使我告訴它,我仍然會用Content-Type: image/png
發送二進制數據,我只接受text/html
。爲什麼Web服務器像這樣工作,而不是強迫我要求的正確迴應?
內容協商的實施是否中斷或者應用程序有責任正確實施它?
真實抓取工具是如何工作的?提前發送HEAD請求以檢查鏈接的另一端看起來是不切實際的資源浪費。