Python3 爬取CSDN文章时报错 ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED]

想用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='

运行上述代码后会报错,具体错误信息如下

urllib.error.URLError: 

或者

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='

没有做注释,凑合着看吧,都是些简单的代码。
使用的库较简单,如果使用scrapy框架写会省很多麻烦…
应该是个通用的爬取新闻的框架,小爬虫,懒得用框架了

大部分爬取下来的网页保存在本地后,打开后会自动跳转,因为网页源代码中有段跳转首页代码,查看源码删掉就行

你可能感兴趣的:(Python3 爬取CSDN文章时报错 ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED])