2015-08-28 36 views
0

我正在使用mechanize庫編寫簡單的Python網絡爬蟲。篩選出用於Python的圖像/文件鏈接機械化網絡爬蟲

現在,我只想做到以下幾點:

  1. 接受startURLs作爲輸入
  2. 對於startURLs每個URL列表,抓取網頁上的所有鏈接
  3. 然後執行每個鏈接的HTTP請求,並從中獲取所有鏈接...
  4. 重複此步驟到startURL的指定深度。

所以我的問題是,當它在步驟3,我希望它跳過下載指向圖像文件的鏈接(所以如果有一個URL http://www.example.com/kittens.jpg),那麼我希望它不是添加到要獲取的網址列表。

很明顯,我可以通過使用正則表達式來匹配URL路徑中的各種文件擴展名,但我想知道是否有更清晰的方式來確定URL是否指向圖像文件,而不是HTML文檔。是否有某種圖書館功能(機械化或其他圖書館)可以讓我這樣做?

回答

1

你在網址上使用正則表達式的建議方法可能是最好的方法來做到這一點,唯一的辦法就是確定url指向的是向服務器發出請求並檢查Content-Type header看看它是否以'image/'開頭。

如果您不介意製作其他服務器請求的開銷,那麼您應該爲資源發送HEAD request而不是通常的GET請求 - 這將導致服務器返回有關資源(包括其內容類型)的信息而不實際返回文件本身,節省了一些帶寬。