优化该段代码并解决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)
时间: 2024-02-23 18:56:46 浏览: 26
这段代码有一个明显的错误,就是在 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)`,以正确输出每个新闻标题。
这样修改后,代码应该可以正常运行并输出所有的新闻标题了。