【发布时间】:2025-12-27 20:20:07
【问题描述】:
我正在尝试将一些数据写入从一些 html 元素中提取的 csv 文件。问题是当我将数据写入 excel 文件时,我可以像在该站点中看到的那样查看该文件中的文本。但是,当我将数据写入 csv 文件时出现问题。我看到一些难以理解的文字,而不是我想要的文字。
数据所在的Html元素:
<div class="col-xs-12">
<h1 class="text-default text-darker no-margin font-180 font-bold">
شركة الوطنية </h1>
<h2 class="text-default font-100 no-margin vertical-offset-5">
</h2>
</div>
期望的输出:
شركة الوطنية
当我尝试时:
from openpyxl import Workbook
from bs4 import BeautifulSoup
wb = Workbook()
wb.remove(wb['Sheet'])
ws = wb.create_sheet("experimental")
ws.append(['name'])
soup = BeautifulSoup(htmlcontent,"lxml")
name = soup.select_one("h1").get_text(strip=True)
ws.append([name])
wb.save("document.xlsx")
它会生成一个 excel 文件,其中的文本看起来像 [如预期的那样]:
但是,当我尝试:
import csv
from bs4 import BeautifulSoup
with open("demo.csv","w",newline="",encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(['name'])
soup = BeautifulSoup(htmlcontent,"lxml")
name = soup.select_one("h1").get_text(strip=True)
writer.writerow([name])
它会生成一个 csv 文件,其中的文本看起来很糟糕:
如何将确切的文本写入 csv 文件?
【问题讨论】:
-
您确定您的文本编码是 UTF-8 吗?照原样,您告诉 Python 您正在写入 CSV 文件的内容是使用 UTF-8 字符编码格式化的。因此,它将其编写为 UTF-8。这可能是您问题的根源!
-
那肯定是错误的编码。 @alex_bits 这里的正确方法是什么?谢谢。
-
试试 UTF-16?这可能有效
标签: python python-3.x csv web-scraping