Как правильно извлечь текст utf8 (японские символы) с веб-страницы с BeautifulSoup4 - PullRequest
3 голосов
/ 07 октября 2019

Я скачал веб-страницы, используя 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)

когда я открываю файл, я получаю бессмысленные символы

вот часть HTML, которую ищет BeautifulSoup:

<span class="radical-icon" lang="ja">亠</span>

ожидаемый результат - получить символы внутри текстового файла. или в любом случае, чтобы сохранить их должным образом.

Есть ли лучший веб-скребок для правильного получения utf8?

PS: извините за плохой английский

1 Ответ

0 голосов
/ 08 октября 2019

Я думаю, что нашел ответ, просто удалите 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)

, что является слишком сложным и непитоническим способом сделать это. но то, что работает, работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...