ошибка импорта из-за bs4 против BeautifulSoup

Я пытаюсь использовать beautifulsoup совместимый lxml и выдает ошибку:

from lxml.html.soupparser import fromstring
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Python/2.7/site-packages/lxml/html/soupparser.py", line 7, in <module>
    from BeautifulSoup import \
ImportError: No module named BeautifulSoup

У меня установлено bs4. Как решить эту проблему?


person raju    schedule 26.12.2012    source источник
comment
Ознакомьтесь с этим вопросом   -  person Aleksander S    schedule 26.12.2012


Ответы (3)


Ошибка вызвана тем, что soupparser.py пытается импортировать BeautifulSoup версии 3, когда у вас установлена ​​версия 4. Имя модуля было изменено с BeautifulSoup на bs4 в версии 4.

Вы можете заставить soupparser.py импортировать версию 4, сопоставив модуль bs4 с BeautifulSoup в sys.modules перед импортом soupparser:

import sys, bs4
sys.modules['BeautifulSoup'] = bs4

from lxml.html.soupparser import fromstring
person Anonymous Coward    schedule 26.12.2012
comment
Суппарсер нормально работает с bs4? Если да, то почему до сих пор используется старая версия? Должны ли мы пойти и изменить суппарсер, чтобы попытаться импортировать bs4 как BeautifulSoup, а затем только импортировать BeautifulSoup, если это не удастся? Предполагая, что в репозитории lxml Github доступен для изменения файл supparser.py, внесение изменений и устранение этой проблемы для будущих пользователей должно быть тривиальным, верно? - person Mark Amery; 03.03.2013
comment
Soupparser теперь портирован на bs4. См. отдельный ответ. - person Emil Stenström; 02.09.2015

Теперь есть версия суппарсера, которая работает с bs4. Он доступен здесь: https://github.com/lxml/lxml/blob/master/src/lxml/html/soupparser.py

person Emil Stenström    schedule 02.09.2015

Попробуйте добавить:

from bs4 import BeautifulSoup

и убедитесь, что у вас установлена ​​правильная версия BeautifulSoup для вашей системы.

person Aleksander S    schedule 26.12.2012
comment
У меня установлена ​​BeautifulSoup версии 4, поэтому из bs4 import BeautifulSoup работает хорошо, но lxml.html.soupparser использует BeautifulSoup 3 и имеет оператор BeautifulSoup import xyz. - person raju; 27.12.2012