python使用urlopen/urlretrieve下載文件時出現403 forbidden的解決方法


在學習Python爬蟲的時候,突然報錯:urllib.error.HTTPError: HTTP Error 403: Forbidden

 

 問題原因:出現該錯誤的原因是服務器開啟了反爬蟲,一般情況下只需要設置header模擬瀏覽器即可,但是urlretrieve並未提供header參數。

解決方案一:使用urlopen直接下載文件:(親測好用)

header = {                      #偽造瀏覽器頭部,不然獲取不到網易雲音樂的頁面源代碼
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0' #根據瀏覽器不同進行替換,實例為火狐
}
def get_music(rs):
response = requests.get(rs, headers=header).content # 必須要加headers信息,不然獲取不到
f = open(name + ".mp3", 'wb') # 以二進制的形式寫入文件中
f.write(response)
f.close()

解決方案二:使用urlretrieve進行下載:(親測,不是太好用)

opener=urllib.request.build_opener()
opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(url, Path)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM