Почему я не могу получить локальные файлы для анализа с помощью BeautifulSoup4 в Jupyterlab

Я следую веб-учебнику, пытаясь использовать BeautifulSoup4 для извлечения данных из html-файла (хранящегося на моем локальном ПК) в Jupyterlab следующим образом:

from bs4 import BeautifulSoup

with open ('simple.html') as html_file:
    simple = BeautifulSoup('html_file','lxml')

print(simple.prettify())

Я получаю следующий вывод независимо от того, что находится в html-файле вместо ожидаемого html

<html>
 <body>
  <p>
   html_file
  </p>
 </body>
</html>

Я также пробовал это с помощью анализатора html html.parser, и я просто получаю html_file в качестве вывода. Я знаю, что он может найти файл, потому что когда я запускаю код после его удаления из каталога, я получаю FileNotFoundError.

Он отлично работает, когда я запускаю python в интерактивном режиме из того же каталога. Я могу запускать другие BeautifulSoup для анализа веб-страниц.

Я использую Fedora 32 linux с Python3, Jupyterlab, BeautifulSoup4, request, lxml, установленными в виртуальной среде с помощью pipenv.

Приветствуется любая помощь в решении проблемы.


person Disnami    schedule 02.10.2020    source источник


Ответы (1)


Ваша проблема в этой строке:

simple = BeautifulSoup('html_file','lxml')

В частности, вы говорите BeautifulSoup анализировать литеральную строку 'html_file' вместо содержимого переменной html_file.

Изменение его на:

simple = BeautifulSoup(html_file,'lxml')

(обратите внимание на отсутствие кавычек вокруг html_file) должно дать желаемый результат.

person mjturner    schedule 02.10.2020