我使用 wget 下载网页。现在我正试图从这些页面中提取一些我需要的数据。问题在于此数据中包含的日语单词。英文单词提取完美。
当我尝试提取日语单词并在另一个应用程序中使用它们时,它们看起来是乱码。在测试不同的方法时,有一个解决方案只修复了一半的日语单词。
我试过的:我试过
from_encoding="utf-8"
没有效果。我还尝试了多种方法从 html 代码中提取文本,例如
section.get_text(strip=True)
section.text.strip()
和其他人,我也尝试使用不起作用的 URLencoding 对生成的文本进行编码,我还尝试使用我在 stackoverflow 上找到的所有代码
一种奇怪的方法(但不完全)是将字符串保存在字典中,然后将其保存到 JSON 中,然后从另一个脚本调用 JSON。仅仅使用字典是行不通的。我必须使用 JSON 作为两个脚本之间的中间人。奇怪的。 (不是所有的词都有效)
我的问题可能看起来像是另一个问题的重复。但另一个问题是从互联网上抓取。而我正在尝试做的是从离线源中提取。
这是一个解释主要问题的简单脚本
from bs4 import BeautifulSoup
page = BeautifulSoup(open("page1.html"), 'html.parser', from_encoding="utf-8")
word = page.find('span', {'class' : "radical-icon"})
wordtxt = word.get_text(strip=True)
#then save the word to a file
with open("text.txt", "w", encoding="utf8") as text_file:
text_file.write(wordtxt)
打开文件时出现乱码
这是 BeautifulSoup 搜索的 html 部分:
<span class="radical-icon" lang="ja">亠</span>
预期的结果是得到文本文件里面的符号。或以任何方式正确保存它们。
是否有更好的网络抓取器可用于正确获取 utf8?
PS:抱歉英语不好
最佳答案
我想我找到了答案,只需卸载 beautifulsoup4。我不需要它。
python 有一个内置的方法来搜索字符串,我试过这样的方法:
import codecs
import re
with codecs.open("page1.html", 'r', 'utf-8') as myfile:
for line in myfile:
if line.find('<span class="radical-icon"') > -1:
result = re.search('<span class="radical-icon" lang="ja">(.*)</span>', line)
s = result.group(1)
with codecs.open("text.txt", 'w', 'utf-8') as textfile:
textfile.write(s)
这是一种过于复杂且非 pythonic 的实现方式。但有效的方法有效。
关于python - 如何使用 BeautifulSoup4 从网页中正确提取 utf8 文本(日文符号),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58276115/