【Python学习笔记】记载解决Python报错HTTP Error 403: Forbidden的一波三折过程

【Python学习笔记】记载解决Python报错HTTP Error 403: Forbidden的一波三折过程

当前进度:还没有解决,但是已经尝试了好几种办法,此处做个记录,也许能帮上忙。
本帖是整理回顾帖,不是教程帖,追求一个完美无缺必拿下答案的码友现在可以退出了。

在跟网课老师敲代码的时候,加载sklearn新闻数据集fetch_20newsgroups()的时候,出错,报错HTTP Error 403: Forbidden。
(我看的网课链接:https://www.bilibili.com/video/BV1e14y1G7gC/?p=68&spm_id_from=pageDriver&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
个人认为是比较适合小白的人工智能入门教程
用到这个数据集的地方是第68p,10 数据集介绍)

经过多方搜索以后目前查到以下解决办法:

一、修改源代码文件

按照如下几个教程贴的步骤来即可,大致内容都差不多,个别代码多个一句两句,比如下面这段,不是每个教程都有:
在这里插入图片描述
https://blog.youkuaiyun.com/weixin_43656359/article/details/103758027?spm=1001.2014.3001.5506
教程帖子1(推荐,有源代码可复制)
在这里插入图片描述
https://blog.youkuaiyun.com/xiaotian127/article/details/86836571?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-86836571-blog-128920936.235%5Ev38%5Epc_relevant_sort_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-6-86836571-blog-128920936.235%5Ev38%5Epc_relevant_sort_base1&utm_relevant_index=7
教程帖子2
在这里插入图片描述
https://blog.youkuaiyun.com/weixin_45510412/article/details/128558799?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-128558799-blog-103758027.235%5Ev38%5Epc_relevant_sort_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-128558799-blog-103758027.235%5Ev38%5Epc_relevant_sort_base1&utm_relevant_index=5
教程帖子3
在这里插入图片描述
这个方法根据这几个评论区帖子的反馈都很有效,但我就是不行,我也很奇怪。之前为了将原神模型导入Unity的时候下了subline Text(现在都还记得应该改哪一串代码让Unity别报错,哈哈)
下面是MMD的改代码界面,顺带提一句免得忘了
subline的使用界面
但是我按照教程改了这个python代码以后并没有解决问题:
在这里插入图片描述
在这里插入图片描述
然后我就去换了方法二

二、氪金买专栏

优快云有一位大佬的付费专栏提供解决方法,评论区反响很好
https://blog.youkuaiyun.com/weixin_43178406/article/details/128920936#comments_27735247
土豪请随意
在这里插入图片描述
但是我按这个脚本复制运行以后,确实下载了数据集,但是还是不能正常运行。
在这里插入图片描述
目前报错Unexpected exception formatting exception. Falling back to standard exception,我百度以后还没弄明白是怎么回事,把可能惹祸的Print注释掉也没用。
https://www.5axxw.com/questions/simple/irn34y
答疑网页
在这里插入图片描述
20230723二次编辑:
我对比以后发现网课老师和写专栏的这位老师的调用方式有所不同,我试了专栏老师的调用方式,现在可以正常读出数据集了:

在这里插入图片描述

图片分割线,果然氪金的就是靠谱啊……

在这里插入图片描述
解决这个数据集读入问题以后,print查看的时候还遇到一个小报错IOPub data rate exceeded,我搜了个解决方案:
https://blog.youkuaiyun.com/xucanlax/article/details/124462706
IOPub data rate exceeded
在这里插入图片描述
我亲自试了以后还是显示一样的内容,无所谓了……
在这里插入图片描述
**

三:本地下载

**
我找到几个教程帖,还是没有起作用。
1.
https://blog.youkuaiyun.com/m0_55196097/article/details/127839231?spm=1001.2014.3001.5506
重建dns缓存
在这里插入图片描述
我按照这个帖子的说法重建了dns缓存,也成功了,但一运行还是报错HTTP Error 403: Forbidden
2.
https://blog.youkuaiyun.com/weixin_45510412/article/details/128558799?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-128558799-blog-103758027.235%5Ev38%5Epc_relevant_sort_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-128558799-blog-103758027.235%5Ev38%5Epc_relevant_sort_base1&utm_relevant_index=5
另一个帖子
在这里插入图片描述
3.
还有处理一个相似数据集的帖子,我看和我这个数据集不一样,就没有实操:
https://blog.youkuaiyun.com/m0_60465900/article/details/129748445?spm=1001.2014.3001.5506
lfw数据集
在这里插入图片描述
**

四:修改user agent

**
上网搜HTTP Error 403: Forbidden报错的时候有帖子说是爬虫引起的,需要改user agent。我是chrome浏览器,就需要搜一下对应的chrome浏览器怎么操作。
我搜了很多帖子,但还是没太明白怎么弄,找到检查以后的Network目录以后就卡住了,改桌面快捷方式的属性似乎也不对。
https://blog.youkuaiyun.com/qq_33218097/article/details/129783677
修改chrome浏览器属性

1.
在这里插入图片描述
**

**
https://www.cnblogs.com/blueteer/p/16013249.html
在header请求中添加User-agent信息
在这里插入图片描述
鉴于我还不是太明白这块,我上万能的b站找了个爬虫知识相关的网课,打算学习一下再试。
https://www.bilibili.com/video/BV17K411G7sY/?spm_id_from=333.337.search-card.all.click&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
python爬虫必备知识点,代理请求数据
在这里插入图片描述
我觉得一般人应该到不了我这步,我属于是环境装得比较混乱才容易一波三折,上面那么多方法普通人最多试2个应该就解决了。
20230723:课程第一遍看完了,对于没有接触过爬虫的人来说是很好的入门教程,但是直接就一步到位到能爬数据集我觉得我还是做不到那个程度。我打算跟着教程再看一遍照着写代码,然后在搞懂这个视频的代码的基础上类比其他帖子和教程的内容继续学习。
第二遍看完以后,我还是不太会实操,从学习到实践还是有一定差距。

### Detectron2 中因 HTTP Error 403 导致的 `urllib.error.HTTPError` 的解决方案 当使用 Detectron2 下载模型权重或其他资源时,可能会遇到 `HTTP Error 403: Forbidden` 错误。这种错误通常是因为服务器拒绝了请求,可能的原因包括缺少必要的头部信息、IP 地址被封禁或者目标 URL 不再可用。 以下是针对该问题的一种通用解决方案: #### 添加 User-Agent 头部信息 许多网站会通过检测请求头中的 `User-Agent` 字段来判断客户端的身份。如果缺失此字段,某些站点可能会返回 403 错误。可以通过修改 Detectron2 或其依赖库(如 fvcore)的相关配置来添加自定义的请求头。 以下是一个示例代码片段,展示如何设置 `User-Agent` 来规避 403 错误[^1]: ```python import urllib.request # 自定义请求头 opener = urllib.request.build_opener() opener.addheaders = [('User-agent', 'Mozilla/5.0')] urllib.request.install_opener(opener) # 测试下载链接 url = "https://example.com/resource" output_file = "./resource.zip" try: urllib.request.urlretrieve(url, output_file) except Exception as e: print(f"Download failed with error: {e}") ``` 对于 Detectron2 而言,可以尝试调整其内部使用的网络请求逻辑。具体方法如下: 1. **定位并修改源码** 如果允许修改 Detectron2 源码,则可以在涉及网络请求的部分加入上述类似的 `User-Agent` 设置。例如,在 `fvcore.common.file_io` 或其他负责文件下载的地方进行更改。 2. **绕过内置下载器** 另一种方式是手动下载所需的预训练模型,并将其路径指定给 Detectron2 使用。这样可以完全避开潜在的网络访问问题。假设已经将模型保存到本地目录 `/path/to/local/model.pth`,则可通过以下方式进行加载: ```python from detectron2.config import get_cfg from detectron2.engine import DefaultPredictor cfg = get_cfg() # 手动设定本地模型路径 cfg.MODEL.WEIGHTS = "/path/to/local/model.pth" predictor = DefaultPredictor(cfg) ``` #### 替代方案:代理或镜像地址 如果仍然无法解决问题,还可以考虑以下几个替代策略: - 配置 HTTPS 代理以隐藏真实 IP 地址。 - 将官方提供的远程存储替换为可信的第三方镜像服务。 --- ### 总结 通过对 `urllib` 请求头增加合适的 `User-Agent` 值,能够有效缓解大部分由权限不足引发的 403 报错情况[^2]。此外,采用离线模式运行 Detectron2 是另一种可靠的选择,尤其适用于频繁遭遇网络限制的情形下[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值