在使用python的request库进行网络访问时,当url是一个https的链接,居然没法正常玩耍,直接提示
1
| <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1051)>
|
使用request进行图片下载,https的格式的图片,结果直接抛出来上面的异常,网上查询了一下,解决方法也比较简单,忽略掉证书校验即可
1 2
| import ssl ssl._create_default_https_context = ssl._create_unverified_context
|
加上上面两行,然后再次测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import os import random from urllib import request import ssl ssl._create_default_https_context = ssl._create_unverified_context
def testDownImg(): url = 'https://www.theblockbeats.com/uploads/course/20190617/1560740686526583.jpg'
def tmp_save(url, app=None): path = f"/tmp/img/{app}/"
if not os.path.exists(path): os.makedirs(path)
try: opener = request.build_opener() opener.addheaders = [('user-agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36')] request.install_opener(opener)
file = f"{path}/01_{random.randint(0, 20)}" request.urlretrieve(url, file) return file except Exception as e: print(e) return None
ans = tmp_save(url, app='test') print(ans)
testDownImg()
|
再次执行,图片正常保存, 上面的代码中,还演示了某些情况下,对user-agent
进行校验的case,我们可以通过 opener
来注册请求头
II. 其他
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
2. 声明
尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
3. 扫描关注
一灰灰blog
知识星球