由于bs4与BeautifulSoup导致导入错误

raj*_*aju 5 python lxml beautifulsoup bs4

我试图使用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
Run Code Online (Sandbox Code Playgroud)

bs4安装了.我该如何解决这个问题?

Ano*_*ard 10

soupparser.py安装版本4时尝试导入BeautifulSoup版本3 会导致该错误.模块名称已从版本4 更改BeautifulSoupbs4.

您可以soupparser.py通过在导入之前将bs4模块映射到BeautifulSoupin 来欺骗导入版本4 :sys.modulessoupparser

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

from lxml.html.soupparser import fromstring
Run Code Online (Sandbox Code Playgroud)

  • Soupparser能和bs4一起使用吗?如果是这样,为什么它仍然使用旧版本?我们应该去更改soupparser以尝试将bs4导入为BeautifulSoup,然后只导入BeautifulSoup吗?假设在lxml的Github仓库中可以修改soupparser.py,那么为未来的用户做出改变并消除这个问题应该是微不足道的,对吧? (4认同)