当前位置: 首页 > 面试题库 >

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

璩涵衍
2023-03-14
问题内容

我想使用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解决此问题?


问题答案:

从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'))


 类似资料:
  • 我正试图更改我的用户代理,并将更改后的用户代理打印到终端,以检查它是否已成功更改,但我没有运气。 def拦截器(请求): 我也不能从selenium wire打印用户代理,我只能使用此方法。 打印(代理) 请有人帮忙,不胜感激:)

  • 问题内容: 我正在编写一个简单的脚本,该脚本可以重新启动hadoop从属服务器。在脚本中,我必须以root用户身份进行一些初始更改。之后,我必须更改为用户“ hadoop”并执行命令集。我使用os.system运行命令,但是我怀疑它是否运行良好。例如: 再一次,我必须以root用户身份执行一些命令,然后再次成为用户“ hadoop”并执行: 我在这里有三个问题, os.system是我可以用来发出

  • 问题内容: 我正在尝试找出一种方法,每当我在此特定脚本中通过Selenium(在Python中)打开Chrome时,Chrome页面都会自动打开,并选择另一个用户代理- 在这种情况下为Microsoft Edge Mobile(但我会从桌面访问它)。 因此,在进行了一些研究之后,我能够整理以下代码,我认为这些代码将在Chrome中执行用户代理开关,然后打开一个新的Bing.com页面: 但是,该代

  • 问题内容: 什么是相对进口?在python2中还允许在其他什么地方导入star?请举例说明。 问题答案: 每当导入相对于当前脚本/软件包的软件包时,就会进行相对导入。 例如,考虑以下树: 现在,你derived.py需要从中获得一些东西。在Python 2中,你可以这样做(在中): Python 3不再支持该功能,因为它是否明确要求“相对”还是“绝对” base。换句话说,如果base系统中安装了

  • 我在硒写测试,想改变代理到自动检测在火狐,默认是从系统设置代理。怎么做呢? 我的代码如下: 上面的代码来自如何使用SeleniumWebDriver和Java为firefox设置代理? 但在行驱动=new FirefoxDriver(配置文件)我得到:构造函数FirefoxDriver(FirefoxProfile)是未定义的

  • 假设我有一个包含16到20个字段的表单,包括输入类型文本和文本区域。 表单使用POST方法将字段提交到php页面,该页面使用$\u POST变量更新数据库中的表。 我的问题是我只想更新数据库中更改的值,而不是更新每个值, 这种优化应用程序的方法有多好?,我也在另一个网站上读到以下答案: mySQL会自动检测到您正在更新一个与它已经包含的值相同的字段,并且实际上不会更新该字段。不确定这是否与其他数据