Python调用requests库下载URL资源报MissingSchema错误排查
问题产生原因
报错根源是wget和requests对URL格式的处理规则完全不同:
- 命令行工具
wget内置了URL容错补全逻辑:当你传入不带协议头的域名路径时,它会自动补上http://前缀,搭配--no-check-certificate跳过证书校验就能正常下载。 requests库执行了严格的URL合法性校验:不会自动补全缺失的协议段(Schema),要求所有传入的请求地址必须明确以http://或https://开头。你传入的地址直接从域名开始,没有协议标识,因此直接抛出MissingSchema异常,报错提示本身也明确指出了问题:缺失协议,建议补充http://前缀。
修复方案
给URL补全协议前缀即可;如果目标站点存在HTTPS证书异常,添加verify=False参数即可实现和wget --no-check-certificate相同的跳过校验效果,修正后的代码如下:
import requests # 补全http协议前缀 url = 'http://cvit.iiit.ac.in/projects/SceneTextUnderstanding/IIIT5K-Word_V3.0.tar.gz' r = requests.get(url, verify=False)
内容的提问来源于stack exchange,提问作者rpb
相关产品推荐
相关产品推荐

