получение текстовой формы, локально сохраненной html файлов с python - PullRequest
0 голосов
/ 20 июня 2020

У меня есть некоторые локально сохраненные файлы. html, и я пытаюсь прочитать текст, который я использую для дальнейшей предварительной обработки данных. Однако моя программа всегда отображает код html в начале, а не просто текст. Это только начало, остальная часть документа выглядит хорошо (просто текст и без кода html)

Я уже пробовал разные методы (с urllib, beautifulsoup или кодеками), но на самом деле не добился успеха и я не знаю, где искать проблему. Мой код выглядит следующим образом:

original = open("path/1.html", "r")
original_text = original.read()
bs = BeautifulSoup(original_text)
f_out = open("path/1.ann", "w")

при открытии файлов .ann это то, что я вижу в начале. После этого отображается просто текст:

<!DOCTYPE html >
<html id="a2gEWnT1MVFW6UkGVvB8Yxeiawb0-27" data-origid="27" class="anndoc" data-anndoc-version="3.6" lang="" xml:lang="" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta charset="UTF-8"/>
    <meta name="generator" />
    <title></title>
  </head>
  <body>
    <article>
      <section data-type="">
        <div class="content">
          <p id="s1p1">&quot;
normal text being displayed here

Кто-нибудь может понять, почему программа не может правильно проанализировать текст из файла. html или что я пропустил?

Спасибо!

1 Ответ

0 голосов
/ 20 июня 2020

BeautifulSoup предоставляет объект, по которому вы можете перемещаться или перебирать, чтобы найти нужный текст. Взгляните на их документацию здесь: https://www.crummy.com/software/BeautifulSoup/bs4/doc/

В частности, чтобы получить весь текст в документе, вы хотите выполнить bs.get_text() и записать его в файл (если это является обязательным).

# Good practice to use open() as a context manager to automatically close
# the file after reading
with open("path/1.html", "rt") as html_file:
    original_text = html_file.read()

bs = BeautifulSoup(original_text)

with open("path/1.ann", "wt") as ann_file:
    ann_file.write(bs.get_text())
...