Python3 爬取CSDN文章时报错 ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python3 爬取CSDN文章时报错 ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED],小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2320字,纯文字阅读大概需要4分钟。
内容图文
想用python3内置的urllib库爬一下新闻、文章,结果报错
代码如下:
import urllib.request
import re
url="https://www.csdn.net/"
header=("User-Agent", "Mozilla/5.0")
opr=urllib.request.build_opener()
opr.addheaders=[header]
data=opr.open(url).read()
data=data.decode("utf-8")
pat='<a href="(https://blog.csdn.net/.*?/article/details/.*?)"'
allurl=re.compile(pat).findall(data)
'''print(allurl)'''
for i in range(0,len(allurl)):
try:
print("这是爬取的第{}个".format(i))
thisurl=allurl[i]
file="//Users//liuyuan//Desktop//1234//"+str(i)+".html"
urllib.request.urlretrieve(thisurl,file)
print("----成功----")
except urllib.error.URLError as e:
if hasattr(e,"code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)
运行上述代码后会报错,具体错误信息如下
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)>
或者
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)
用urllib.request.open(url)只能访问一些http的网站,无法访问https网站
这是由于大部分https的网站需要有SSL证书,即使模拟了User-Agent访问,还是报错,https的安全基础是SSL,如果没有SSL证书,就会拒绝访问。
或者就是此次访问忽略证书验证,查了一下资料,具体实现如下:
需要导入一个模块:
import ssl
然后加入这段代码:
ssl._create_default_https_context = ssl._create_unverified_context
这段代码可以取消证书的验证。
所有代码如下:
import urllib.request
import re
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
url="https://www.csdn.net/"
headers=("User-Agent", "Mozilla/5.0")
opr=urllib.request.build_opener()
opr.addheaders=[headers]
data=opr.open(url).read()
data=data.decode("utf-8","ignore")
pat='<a href="(https://blog.csdn.net/.*?/article/details/.*?)"'
allurl=re.compile(pat).findall(data)
'''print(allurl)'''
for i in range(0,len(allurl)):
try:
print("这是第{}次爬取".format(i))
thisurl=allurl[i]
file="//Users//liuyuan//Desktop//1234//"+str(i)+".html"
urllib.request.urlretrieve(thisurl,file)
print("----成功----")
except urllib.error.URLError as e:
if hasattr(e,"code"):
print(e.code)
if hasattr(e,"reason"):
print(e.reason)
没有做注释,凑合着看吧,都是些简单的代码。
使用的库较简单,如果使用scrapy框架写会省很多麻烦…
应该是个通用的爬取新闻的框架,小爬虫,懒得用框架了
内容总结
以上是互联网集市为您收集整理的Python3 爬取CSDN文章时报错 ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]全部内容,希望文章能够帮你解决Python3 爬取CSDN文章时报错 ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。