首页 > 解决方案 > 使用 python 从 url 读取 json 数据时出现错误“urllib.error.HTTPError: HTTP Error 403: Forbidden”

问题描述

使用此代码,我正在读取 URL 并使用数据进行过滤,但 urllib 无法工作

url = "myurl"
response = urllib.request.urlopen(url)
data = json.loads(response.read())

昨天它运行良好,但现在给我错误:

Traceback (most recent call last):
  File "vaccine_survey.py", line 22, in <module>
    response = urllib.request.urlopen(url)
  File "/usr/lib/python3.6/urllib/request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "/usr/lib/python3.6/urllib/request.py", line 532, in open
    response = meth(req, response)
  File "/usr/lib/python3.6/urllib/request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python3.6/urllib/request.py", line 570, in error
    return self._call_chain(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 504, in _call_chain
    result = func(*args)
  File "/usr/lib/python3.6/urllib/request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 403: Forbidden

标签: pythonjsonurlliburllib2urllib3

解决方案


这对我有用,这里的 'myurl' 是一个 url 地址

from urllib.request import Request, urlopen

req = Request('myurl', headers={'User-Agent': 'Mozilla/5.0'})
response = urlopen(req).read()
data = json.loads(response.read())


推荐阅读