首页 新闻 会员 周边

爬虫中遇见SSL问题

0
[待解决问题]

在学习过程中遇见了sll报错,在网上找的方法都试过了,没用,奇怪的是有些电脑有这个问题,有些电脑没有这个问题
报这个错:“ requests.exceptions.SSLError: HTTPSConnectionPool(host='xiaohua.zol.com.cn', port=443): Max retries exceeded with url: /new/1.html (Caused by SSLError(SSLError(1, '[SSL: UNSAFE_LEGACY_RENEGOTIATION_DISABLED] unsafe legacy renegotiation disabled (_ssl.c:1006)')))

代码
import requests
from lxml import etree

def Parse_url(page_url,header,proxy):
rep=requests.post(page_url,headers=header,proxies=proxy,verify=False)
html=rep.text
parser=etree.HTML(html)
detail_url_list=parser.xpath('//ul[@class="article-list"]/li[@class="article-summary"]//a[@class="all-read"]/@href')
for detail_url in detail_url_list:
detail_url='http://xiaohua.zol.com.cn/'+detail_url
Parse_detail(detail_url,header,proxy)

def Parse_detail(detail_url,header,proxy):
rep = requests.post(detail_url,headers=header,proxies=proxy,verify=False)
html = rep.text
parser=etree.HTML(html)
joke_title = parser.xpath('//h1/text()')[0]
joke_content = ''.join(parser.xpth('//div[@chass="article-text"]//text()')).strip()
fp.write(joke_title+'\n'+joke_content+'\n')
print(f'{joke_title}笑话下载完毕!')

if name=='main':
header={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
}
proxy={
'http':'http://58.220.95.54:9400'
}
page_url='https://xiaohua.zol.com.cn/new/1.html'
Parse_url(page_url,header,proxy)

给你未来的主页 给你未来 | 菜鸟二级 | 园豆:202
提问于:2023-12-07 10:56
< >
分享
所有回答(1)
0

该错误表明你的请求由于 SSL 验证问题而失败。在你的代码中,你使用了 verify=False 参数来禁用 SSL 验证,这是一个绕过 SSL 验证的方法,但并不推荐在真实环境中使用,因为它降低了连接的安全性。

对于你的报错,它似乎与 SSL 安全协议版本和协商有关。有些电脑可能因为其 Python 版本、操作系统或一些其他配置而对 SSL 有不同的支持,导致了这种不一致性。

尝试以下方法来解决问题:

更新你的 Python 版本: 确保你正在使用的是最新版本的 Python。你可以使用 python --version 来查看当前 Python 版本,并使用 pip install --upgrade python 更新到最新版本。

更新 requests 库: 确保你的 requests 库也是最新版本。你可以使用以下命令更新 requests:

bash
Copy code
pip install --upgrade requests
使用更安全的方式禁用 SSL 验证: 如果你仍然想继续禁用 SSL 验证,尝试使用以下方法,它更加安全:

python
Copy code
import urllib3

禁用 SSL 警告

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

...

rep = requests.post(detail_url, headers=header, proxies=proxy, verify=False)
请注意,这并不是推荐的做法,因为它会绕过 SSL 验证,可能导致安全风险。最好的方法是让你的请求能够通过正确的 SSL 验证,确保你的 Python 和相关库都是最新版本,以便支持最新的安全协议。

Technologyforgood | 园豆:5686 (大侠五级) | 2023-12-16 21:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册