如何修改Python爬虫代码以正常显示孟加拉语并保存为CSV
解决孟加拉语谷歌新闻爬虫的Unicode转义与CSV保存问题
问题说明
现有基于requests和BeautifulSoup的谷歌新闻爬虫,爬取孟加拉语新闻后,输出的标题、摘要、日期显示为Unicode转义序列,需要修改代码实现孟加拉语正常显示,并将结果保存为CSV文件。
修改后的完整代码
import json import requests import csv from bs4 import BeautifulSoup def getNewsData(): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36" } response = requests.get( "https://www.google.com/search?q=মুক্তিযুদ্ধ&gl=bd&tbm=nws&num=1", headers=headers ) soup = BeautifulSoup(response.content, "html.parser") news_results = [] for el in soup.select("div.SoaBEf"): news_results.append( { "link": el.find("a")["href"], "title": el.select_one("div.MBeuO").get_text().strip(), "snippet": el.select_one(".GI74Re").get_text().strip(), "date": el.select_one(".LfVVr").get_text().strip(), "source": el.select_one(".NUnG9d span").get_text().strip() } ) # 正常显示孟加拉语输出 print(json.dumps(news_results, indent=2, ensure_ascii=False)) # 保存为CSV文件 if news_results: keys = news_results[0].keys() with open("bangla_news.csv", "w", newline="", encoding="utf-8-sig") as f: writer = csv.DictWriter(f, fieldnames=keys) writer.writeheader() writer.writerows(news_results) print("新闻已成功保存到 bangla_news.csv") getNewsData()
关键修改点说明
- 修复缩进错误:原代码中函数
getNewsData()内的代码未正确缩进,导致运行报错,已修正为函数内缩进格式。 - 关闭Unicode转义:调用
json.dumps时添加ensure_ascii=False参数,让孟加拉语字符直接显示,不再转为Unicode转义序列。 - 添加CSV保存功能:
- 导入
csv模块,使用DictWriter直接将字典格式的新闻数据写入CSV文件。 - 指定
encoding="utf-8-sig",确保生成的CSV文件在Excel等工具中能正确显示孟加拉语,避免乱码。 - 用
strip()去除文本中的换行和多余空格,优化输出内容的整洁度。
- 导入
内容的提问来源于stack exchange,提问作者Arik Ezaz
相关产品推荐
相关产品推荐

