![](/img/trans.png)
[英]Add contact information to user-agent using selenium chromedriver
[英]HTTPError: Not Found using user-agent
我很想打开一个 url,如下所示:
import urllib.request
url = "https://www.chess.cornell.edu/index.php/users/calculato%20rs/calculator-absolute-flux-measurement-using-xpd100"
# I tried to access to this url.
req = urllib.request.Request(
url,
headers={
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
}
)
# using the user agent like many answers suggested.
f = urllib.request.urlopen(req)
但是,我总是收到如下错误:
File "C:\ProgramData\Anaconda3\lib\urllib\request.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
HTTPError: Not Found
非常感谢您的帮助!
我使用了请求库,它运行良好
import request
r = requests.get("https://www.chess.cornell.edu/index.php/users/calculato%20rs/calculator-absolute-flux-measurement-using-xpd100")
即使它返回一个,
<Response [404]>
你仍然可以使用r.text
来获取站点的 html
这可能是因为站点返回状态404
(未找到),即使它实际上返回了有效页面。 虽然urllib
出现恐慌并抛出错误,但您的浏览器和requests
仍会继续执行并向我们显示页面。
很高兴这有帮助:)
如果即使是 404 错误也需要获取响应主体,这就是使用urllib
完成的方式:
try:
f = urllib.request.urlopen(req)
except urllib.error.HTTPError as err:
f = err
这是一个非常简单的片段,当然,假设你想稍后执行f.read()
来处理内容。 在一个健壮的程序中,应该对 HTTP 响应代码、内容类型等进行各种检查。
当然,使用requests
(正如@DeeraWijesundara 所建议的那样)并没有错。 事实上,在类似的情况下,我个人也会使用requests
,但为了完整起见,我决定添加一个仅限 stdlib 的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.