Article `download()` failed with HTTPSConnectionPool(host='www.chinanews.com.cn', port=443): Max retries exceeded with url: /cj/2020/12-16/9363925.shtml (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:997)'))) on URL http://www.chinanews.com/cj/2020/12-16/9363925.shtml
时间: 2024-04-04 10:31:09 浏览: 127
这个错误提示表明您下载该文章时遇到了 SSL 证书验证问题。这可能是由于您的计算机未能验证该网站的 SSL 证书,或者该网站的 SSL 证书存在问题。您可以尝试以下解决方案:
1. 尝试使用不同的浏览器或者在隐私模式下打开浏览器,有时这可以解决 SSL 证书验证问题。
2. 确认您的计算机的日期和时间设置是否正确,因为错误的日期和时间设置可能导致 SSL 证书验证失败。
3. 确认您的计算机是否具有最新的根证书颁发机构列表。您可以尝试更新您的操作系统和浏览器,以获取最新的根证书颁发机构列表。
4. 如果您仍然无法下载该文章,请考虑联系文章的发布者或网站管理员,了解他们是否可以提供其他下载方式或解决 SSL 证书验证问题。
相关问题
优化该段代码并解决bugimport requests from bs4 import BeautifulSoup url="https://www.chinanews.com/importnews.html" headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57"} def get_news_list(url): res=requests.get(url=url, headers=headers) soup=BeautifulSoup(res.text, 'html.parser') news_list=[] for news in soup.select('.dd_lm'): tittle=news.select(".dd_time")[0].text.strip() return news_list if __name__=='__main__': news_list=get_news_list(url) for news in news_list: print(news_list)
这段代码有一个明显的错误,就是在 for 循环中只提取了最后一个新闻标题,而没有将所有的新闻标题添加到列表 `news_list` 中。以下是修改后的代码,包括对代码进行了一些优化:
```
import requests
from bs4 import BeautifulSoup
url = "https://www.chinanews.com/importnews.html"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57"
}
def get_news_list(url):
res = requests.get(url=url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
news_list = []
for news in soup.select('.dd_lm'):
title = news.select(".dd_bt a")[0].text.strip()
news_list.append(title)
return news_list
if __name__ == '__main__':
news_list = get_news_list(url)
for news in news_list:
print(news)
```
主要的改动如下:
1. 在 for 循环中添加了 `news_list.append(title)` 语句,将每个新闻标题添加到列表中。
2. 将新闻标题的选择器修改为了 `.dd_bt a`,以正确提取新闻标题。
3. 在 `if __name__ == '__main__'` 块中,将 `print(news_list)` 改为了 `print(news)`,以正确输出每个新闻标题。
这样修改后,代码应该可以正常运行并输出所有的新闻标题了。
检验此代码能否正常运行import requests from bs4 import BeautifulSoup url = "https://www.chinanews.com/importnews.html" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.57" } def get_news_list(url): res = requests.get(url=url, headers=headers) soup = BeautifulSoup(res.text, 'html.parser') news_list = [] for news in soup.select('.dd_lm'): title = news.select(".dd_bt a")[0].text.strip() news_list.append(title) return news_list if __name__ == '__main__': news_list = get_news_list(url) for news in news_list: print(news)
这段代码应该可以正常运行,它通过 requests 库发送 HTTP 请求,使用 BeautifulSoup 库解析 HTML 页面,然后提取出新闻标题并将其添加到列表中,最后输出所有的新闻标题。在运行代码之前,需要确保已经安装了 requests 和 BeautifulSoup 库。如果遇到导入库失败的问题,可以使用 pip 命令进行安装,例如:
```
pip install requests
pip install beautifulsoup4
```
安装完成后,就可以运行代码并获取新闻标题了。
阅读全文