Python 使用beatifulsoup解析数据时如何将html实体保存到csv文件中
找不到任何将HTML实体保存到CSV文件的解决方案,例如提取此类数据的脚本Python 使用beatifulsoup解析数据时如何将html实体保存到csv文件中,python,beautifulsoup,Python,Beautifulsoup,找不到任何将HTML实体保存到CSV文件的解决方案,例如提取此类数据的脚本 <li>Key Switch: Blue switch </li> 钥匙开关:蓝色开关 csv文件中的输出如下所示 <li>Key Switch: Blue switch </li> 钥匙开关:蓝色开关 有没有办法保存页面上显示的HTML实体?您实际上不需要保存HTML实体。在HTML中,只有五个HTML实体实际上是至关重要的:,,&和不太
<li>Key Switch: Blue switch </li>
钥匙开关:蓝色开关
csv文件中的输出如下所示
<li>Key Switch: Blue switch </li>
钥匙开关:蓝色开关
有没有办法保存页面上显示的HTML实体?您实际上不需要保存HTML实体。在HTML中,只有五个HTML实体实际上是至关重要的:
,
,&
和不太重要的“
和&apos;
。所有其他的都只是一种便利设施,而不是必需品
在手工编写HTML时,它们可以方便地输入键盘上没有键的字符,或者区分在源代码中看起来相同的字符,如常规空格和非中断空格(
)
但是,考虑到您在任何地方都使用了正确的字符编码,用它们所代表的实际字符替换这些实体是完全可能的
这正是你的问题所在。事情就是这样:
- 您下载了HTML文件,服务器已正确指定编码
- 您使用BeautifulSoup来解析它。在此过程中,
被转换为不间断空格字符。这是解析的正常部分,每个HTML解析器都会这样做 - 您处理了DOM树并将其部分保存到CSV文件中。您为该文件选择了UTF-8编码。非中断空间由UTF-8中的两个字节
和0xC2
表示0xA0
- 您再次加载了CSV文件,可能是在代码的另一部分,也可能是在另一个应用程序中(可能是Excel?),但您没有指定它是UTF-8(多字节编码)
- 因此,应用程序使用系统上配置的任何“默认编码”来解释文件中的字节——我怀疑使用了Windows-1252(单字节编码)
- 在Windows-1252中,两个字节
和0xC2
代表两个字符:0xA0
和,具有讽刺意味的是,非中断空格。换句话说,到目前为止,所有内容都是正确的,是错误的读取方式导致数据中断
- 告诉加载CSV文件的应用程序或代码段编码为
UTF-8
- 将UTF-8 BOM(字节顺序标记)添加到CSV文件。尤其是Excel可能需要这样才能正常工作。
Python调用这种编码
,您可以在打开CSV文件进行写入时使用它utf-8-sig
- 以系统默认的“传统”编码(而不是UTF-8)保存CSV文件,可能无法保存该编码不支持的任何字符