隨著互聯網的發展,網站的防盜鏈已成為一個重要的問題。爬蟲在大量抓取數據時,往往需要訪問不同的網站,但有些網站會對圖片或其它文件設置防盜鏈,導致爬蟲無法獲取這些資源。針對這種情況,我們可以使用 Python 代碼來模擬瀏覽器操作,達到突破防盜鏈的目的。
import requests url = "http://example.com/image.jpg" referer = "http://example.com/page" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3", "Referer": referer } response = requests.get(url, headers=headers) with open("image.jpg", "wb") as f: f.write(response.content) print("下載完成!")
上面的代碼中,我們使用requests
庫來獲取圖片,同時設置了 User-Agent 和 Referer ,模擬瀏覽器訪問。其中 Referer 字段是指從哪個頁面跳轉出去的,我們可以把它設置為目標文件所在頁面的 URL。
除了在請求頭中設置 Referer ,還有一種方式是在 URL 后面加上?Referer=...
參數。這樣做的原理是有些網站會檢查 Referer 是否合法,而這種方式可以繞過這種檢查。
import requests url = "http://example.com/image.jpg?Referer=http://example.com/page" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3", } response = requests.get(url, headers=headers) with open("image.jpg", "wb") as f: f.write(response.content) print("下載完成!")
綜上所述,通過設置請求頭或在 URL 中添加參數,我們可以輕松突破網站的防盜鏈,實現 Python 爬蟲對圖片等資源的抓取。
上一篇python 的常用時間
下一篇python 的幫助文件