当前位置: 首页 > 知识库问答 >
问题:

python3.x - 无法下载网页urllib.error.HTTPError: HTTP Error 403: Forbidden?

张照
2024-01-29

想提取这个网页的数据

from urllib.request import urlretrieveimport urllibimport randomurl="https://cn.investing.com/indices/hnx-30-components"opener = urllib.request.build_opener()ua_list = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0',           'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',           'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.62',           'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0',           'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0'           ]opener.addheaders = [('User-Agent', random.choice(ua_list))]urllib.request.install_opener(opener)urlretrieve(url, '/tmp/test.html')

网页无法打开,浏览器可以打开

  File "/usr/local/lib/python3.11/urllib/request.py", line 643, in http_error_default    raise HTTPError(req.full_url, code, msg, hdrs, fp)urllib.error.HTTPError: HTTP Error 403: Forbidden

请问,如何解决?

共有1个答案

申屠瀚海
2024-01-29

这个问题是因为服务器识别到你所发送的 HTTP 请求头中的 User-Agent 不正确,因此拒绝了你的请求。服务器认为你的请求是来自一个不合法或者不受信任的客户端,所以返回了 403 Forbidden 错误。

你可以通过修改 User-Agent 头来解决这个问题。User-Agent 头是 HTTP 请求头中的一部分,用于告诉服务器发起请求的客户端类型。

你可以尝试使用如下的代码来修改 User-Agent:

from urllib.request import urlretrieveimport urllib.requestimport randomurl = "https://cn.investing.com/indices/hnx-30-components"ua_list = ['Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0',            'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',            'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.62',            'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0',            'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0'           ]while True:    opener = urllib.request.build_opener()    opener.addheaders = [('User-Agent', random.choice(ua_list))]    try:        urllib.request.install_opener(opener)        urlretrieve(url, '/tmp/test.html')        break  # 如果成功下载,则跳出循环    except urllib.error.HTTPError as e:        if e.code == 403:  # 如果服务器返回 403 Forbidden,则继续尝试其他 User-Agent            continue        else:  # 其他错误则退出循环            break

这段代码会尝试使用随机选择的 User-Agent 来发起请求,如果服务器返回 403 Forbidden,则会继续尝试其他 User-Agent,直到成功下载页面或者所有 User-Agent 都尝试过。如果服务器返回的不是 403 Forbidden,则会停止尝试并退出循环。

 类似资料:
  • 本文向大家介绍Python3.x爬虫下载网页图片的实例讲解,包括了Python3.x爬虫下载网页图片的实例讲解的使用技巧和注意事项,需要的朋友参考一下 一、选取网址进行爬虫 本次我们选取pixabay图片网站 二、选择图片右键选择查看元素来寻找图片链接的规则 通过查看多个图片路径我们发现取src路径都含有 https://cdn.pixabay.com/photo/ 公共部分且图片格式都为.jpg

  • 问题内容: 这是此网页中的链接 https://www.shareinvestor.com/prices/price_download.html#/?type=price_download_all_stocks_bursa。 然后将其保存到此目录”/home/vinvin/shKLSE/(我正在使用 pythonaywhere)。然后将其解压缩,然后将csv文件解压缩到目录中。 该代码一直运行到最

  • 本文向大家介绍python3 下载网络图片代码实例,包括了python3 下载网络图片代码实例的使用技巧和注意事项,需要的朋友参考一下 说明:这里仅展示在已经获取图片链接后的下载方式,对于爬虫获取链接部分参考前面的文章 1、利用文件读写的方式下载图片 2、urlretrieve()方法 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我希望在Chrome中查看页面,只有Chrome是打开的,而特定的页面没有加载。 谢谢你给我时间帮我解决问题。

  • 问题内容: 我正在寻找一种从网站自动下载文件的方法。 目前,该过程确实是手动且繁重的。我进入网页,输入通行证并登录。它打开一个弹出窗口,在这里我必须单击下载按钮以保存.zip文件。 您对我如何自动执行此任务有任何建议? 我在Windows 7上,主要可以使用MS Dos Batch或python。但是我愿意接受其他想法。 问题答案: 您可以使用Selenium Web驱动程序自动执行下载。您可以在

  • 我有一个wordpress页面,在JS中有一些自定义功能,人们可以用pdf格式保存。是否有一种方法可以让人们也下载docx(MS Word)中的页面?我试着寻找解决办法,但找不到太多。 我想有一个按钮‘下载为docx',生成一个类似的pdf格式的外观版本。