urllib.error.HTTPError:HTTP 错误 403:使用 urllib.requests 禁止
Posted
技术标签:
【中文标题】urllib.error.HTTPError:HTTP 错误 403:使用 urllib.requests 禁止【英文标题】:urllib.error.HTTPError: HTTP Error 403: Forbidden with urllib.requests 【发布时间】:2021-12-15 08:18:41 【问题描述】:我正在尝试从 Internet 读取图像 URL 并能够通过 python 将图像获取到我的机器上,我使用了此博客文章中使用的示例https://www.geeksforgeeks.org/how-to-open-an-image-from-the-url-in-pil/,它是https://media.geeksforgeeks.org/wp-content/uploads/20210318103632/gfg-300x300.png,但是,当我尝试我的自己的例子它似乎不起作用我已经尝试了 HTTP 版本,但它仍然给我 403 错误。有谁知道可能是什么原因?
import urllib.request
urllib.request.urlretrieve(
"http://image.prntscr.com/image/ynfpUXgaRmGPwj5YdZJmaw.png",
"gfg.png")
输出:
urllib.error.HTTPError:HTTP 错误 403:禁止
【问题讨论】:
尝试将用户代理设置为 firefox 或 chrone 【参考方案1】:prntscr.com
的服务器正在积极拒绝您的请求。这有很多原因。一些网站会检查调用者的用户代理,看看是否是这种情况。就我而言,我使用httpie 来测试它是否允许我通过非浏览器应用程序下载。有效。于是我就简单的复用了一个user header,看看是不是缺少user-agent。
import urllib.request
opener = urllib.request.build_opener()
opener.addheaders = [('User-Agent', 'MyApp/1.0')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(
"http://image.prntscr.com/image/ynfpUXgaRmGPwj5YdZJmaw.png",
"gfg.png")
成功了!现在我不知道服务器使用什么逻辑。例如,我尝试了一个标准的Mozilla/5.0
,但没有奏效。你不会总是遇到这个问题(只要你是合理的,大多数网站在他们允许的范围内都很松懈),但是当你这样做时,尝试使用用户代理。如果没有任何效果,请尝试使用与浏览器相同的用户代理。
【讨论】:
以上是关于urllib.error.HTTPError:HTTP 错误 403:使用 urllib.requests 禁止的主要内容,如果未能解决你的问题,请参考以下文章
urllib.error.HTTPError:HTTP 错误 404:未找到 - python
Pytube:urllib.error.HTTPError:HTTP 错误 410:消失了
urllib.error.HTTPError: HTTP Error 403: Forbidden
urllib.error.HTTPError: HTTP Error 403: Forbidden