【发布时间】:2026-01-11 06:25:01
【问题描述】:
我在 python 3.4.6 中使用urllib.request 打开https://www.ethz.ch/(实际的 url 更长,但问题是一样的),它在 Firefox 中可以正常打开,但在 python 中会引发 404 错误。
这里是代码
from urllib.request import urlopen
connection = urlopen('https://www.ethz.ch/')
它会给出以下错误消息
Traceback (most recent call last):
File "./generate_group_meetings_ical.py", line 9, in <module>
connection = urlopen('https://www.ethz.ch/')
File "/usr/lib64/python3.4/urllib/request.py", line 161, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib64/python3.4/urllib/request.py", line 470, in open
response = meth(req, response)
File "/usr/lib64/python3.4/urllib/request.py", line 580, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib64/python3.4/urllib/request.py", line 508, in error
return self._call_chain(*args)
File "/usr/lib64/python3.4/urllib/request.py", line 442, in _call_chain
result = func(*args)
File "/usr/lib64/python3.4/urllib/request.py", line 588, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not found UA
虽然以前的代码可以正常工作。另一条信息是我不是机器上的 root 并且 python3 已从 3.4.5 升级到 3.4.6。所以它来自 web 服务器端或 python 端。我不是 python 也不是网络专家,所以我自己也搞不清楚。
希望有人可以帮助我。
【问题讨论】:
-
听起来像是用户代理问题,尝试将用户代理字符串设置为其他内容,看看是否是问题所在。
-
非常感谢弗朗西斯科,它解决了这个问题。我发布了一个描述它的答案。
-
刚刚在同一所大学为练习表构建刮板时遇到了同样的问题,哈哈