一尘不染

在urrlib.request.urlopen中的Python 3中更改用户代理

python

我想使用urllib.request.urlopen('someurl')以下网址打开网址:

with urllib.request.urlopen('someurl') as url:
b = url.read()

我不断收到以下错误:

urllib.error.HTTPError: HTTP Error 403: Forbidden

我知道该错误是由于该网站不允许python访问该网站,阻止僵尸程序浪费其网络资源而引起的,这是可以理解的。我去搜索,发现您需要更改urllib的用户代理。但是,我针对此问题找到的有关如何更改用户代理的所有指南和解决方案均已使用urllib2,并且我使用的是python
3,因此所有解决方案均不起作用。

如何使用python 3解决此问题?


阅读 208

收藏
2020-12-20

共1个答案

一尘不染

Python文档

import urllib.request
req = urllib.request.Request(
    url, 
    data=None, 
    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'
    }
)

f = urllib.request.urlopen(req)
print(f.read().decode('utf-8'))
2020-12-20