我正在尝试从特定网站下载图像,尽管该链接有效并且可以通过chrome浏览器访问,但似乎无法使用urllib
下载图像。我试图弄清楚为什么会发生这种情况以及如何解决它。
这些是我得到的错误:
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden
代码:
import requests
import urllib.request
import os
myPath2 = "C:\\Users\\Admin\\Desktop\\aaa\\test"
filename = "just_a_test"
fullfilename = os.path.join(myPath2, filename)
urllib.request.urlretrieve("https://image.prntscr.com/image/Vje0uwk0Rv6GpEyTTpKJ7g.png", fullfilename + ".png")
答案 0 :(得分:1)
该站点由于用户代理而拒绝了该请求,该用户代理将该请求标识为来自urllib
。尝试将其更改为传统浏览器,如以下示例所示:
opener = urllib.request.build_opener()
opener.addheaders = [
(
"User-Agent",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36",
)
]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(
"https://image.prntscr.com/image/Vje0uwk0Rv6GpEyTTpKJ7g.png", fullfilename + ".png"
)