...
soup = BeautifulSoup(html, "lxml")
File "/Library/Python/2.7/site-packages/bs4/__init__.py", line 152, in __init__
% ",".join(features))
bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to install a parser library?
Вышеуказанные выводы на моем терминале. Я нахожусь на Mac OS 10.7.x. У меня есть Python 2.7.1, и я следовал этому руководству, чтобы получить Beautiful Soup и lxml, которые успешно установлены и работают с отдельным тестовым файлом, расположенным здесь . В скрипте Python, который вызывает эту ошибку, я включил эту строку:
from pageCrawler import comparePages
И в файл pageCrawler я включил следующие две строки:
from bs4 import BeautifulSoup
from urllib2 import urlopen
Любая помощь в выяснении, в чем заключается проблема и как ее можно решить, будет высоко ценится.
python
python-2.7
beautifulsoup
lxml
user3773048
источник
источник
html
URL - адрес или а содержимое HTML?Ответы:
У меня есть подозрение, что это связано с анализатором, который BS будет использовать для чтения HTML. Они документируют здесь , но если вы похожи на меня (на OSX), вы можете застревать с чем-то, что требует немного работы:
Вы заметите, что на странице документации BS4 выше они указывают, что по умолчанию BS4 будет использовать встроенный анализатор Python HTML. Предполагая, что вы находитесь в OSX, версия Python для Apple является 2.7.2, которая не подходит для форматирования символов. Я столкнулся с этой же проблемой, поэтому я обновил свою версию Python, чтобы обойти ее. Выполнение этого в virtualenv сведет к минимуму нарушение других проектов.
Если это звучит как боль, вы можете переключиться на анализатор LXML:
А затем попробуйте:
В зависимости от вашего сценария, это может быть достаточно хорошо. Я нашел это достаточно раздражающим, чтобы оправдать обновление моей версии Python. Используя virtualenv, вы можете довольно легко перенести ваши пакеты .
источник
python -c 'import requests ; from bs4 import BeautifulSoup ; r = requests.get("https://www.allrecipes.com/recipes/96/salad/") ; soup = BeautifulSoup(r.text, "lxml") '
requests
,bs4
аlxml
перед этимBeautifulSoup
проанализировать содержимое моей веб-страницы.Для основного готового Python с установленным bs4 вы можете обработать ваш XML с
Однако, если вы хотите использовать formatter = 'xml', вам нужно
источник
pip install html5lib
, после чего все работало нормально.bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: html5lib. Do you need to install a parser library?
если я изменить его наhtml.parser
ней работаетЯ предпочел встроенный синтаксический анализатор Python, нет установки, никаких зависимостей
soup = BeautifulSoup(s, "html.parser")
источник
Я использую Python 3.6, и у меня была та же самая оригинальная ошибка в этом посте. После того, как я запустил команду:
это решило мою проблему
источник
apt install python-lxml
Запустите эти три команды, чтобы убедиться, что у вас установлены все соответствующие пакеты:
Затем перезапустите вашу Python IDE, если это необходимо.
Это должно заботиться обо всем, что связано с этой проблемой.
источник
Вместо использования lxml используйте html.parser, вы можете использовать этот фрагмент кода:
источник
vendor.bs.bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: html.parser. Do you need to install a parser library?
Хотя BeautifulSoup по умолчанию поддерживает анализатор HTML. Если вы хотите использовать любые другие сторонние анализаторы Python, вам необходимо установить этот внешний анализатор, например (lxml).
Но если вы не указали парсер в качестве параметра, вы получите предупреждение, что парсер не указан.
Чтобы использовать любой другой внешний парсер, вам необходимо установить его, а затем указать его. лайк
Внешний парсер имеет зависимость c и python, что может иметь некоторые преимущества и недостатки.
источник
Я столкнулся с той же проблемой. Я обнаружил, что причина в том, что у меня был слегка устаревший пакет python шесть.
Обновление шести пакетов решит проблему:
источник
sudo pip install six==1.10.0
Установите парсер LXML в среде Python.
Ваша проблема будет решена. Вы также можете использовать встроенный пакет Python для того же:
Примечание. Модуль «HTMLParser» был переименован в «html.parser» в Python3.
источник
В некоторых ссылках используйте второе вместо первого:
источник
Ошибка приходит из-за используемого вами парсера. В общем, если у вас есть HTML-файл / код, то вам нужно его использовать
html5lib
(документацию можно найти здесь ), а в случае, если у вас есть XML-файл / данные, вам нужно его использоватьlxml
(документацию можно найти здесь ). Вы также можете использоватьlxml
для файла / кода HTML, но иногда это дает ошибку, как указано выше. Так что лучше выбирать пакет разумно, исходя из типа данных / файла. Вы также можете использоватьhtml_parser
встроенный модуль. Но это также иногда не работает.Более подробную информацию о том, когда использовать какой пакет вы можете увидеть здесь.
источник
Пустой параметр приведет к предупреждению для лучшего из доступных.
суп = BeautifulSoup (HTML)
--------------- / UserWarning: синтаксический анализатор не был указан явно, поэтому я использую лучший доступный анализатор HTML для этой системы ("html5lib"). Обычно это не проблема, но если вы запускаете этот код в другой системе или в другой виртуальной среде, он может использовать другой анализатор и вести себя по-другому .--------------- ------- /
Python - версия Python 3.7.7
PyCharm 19.3.4 CE
источник