5

我最近在 Windows 机器上将 BeautifulSoup 从 3.0 版升级到 4.1 版。

我现在收到一个奇怪的错误:

File "C:\path\to\myscript.py", line 23
0, in soupify
    return BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
AttributeError: type object 'BeautifulSoup' has no attribute 'HTML_ENTITIES'

这是导致抛出异常的代码片段:

def soupify(html):
    return BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)

BS 的文档没有提到构造函数签名如何从 v3 更改为 v4。我该如何解决这个问题?

4

3 回答 3

5

传入的 HTML 或 XML 实体总是被转换为相应的 Unicode 字符。Beautiful Soup 3 有许多处理实体的重叠方式,这些方式已被删除。 BeautifulSoup 构造函数不再识别 smartQuotesTo 或 convertEntities 参数。(Unicode,Dammit 仍然有 smart_quotes_to,但现在它的默认设置是将智能引号转换为 Unicode。)

如果您想在输出时将这些 Unicode 字符转换回 HTML 实体,而不是将它们转换为 UTF-8 字符,则需要使用输出格式化程序

资料来源:http ://www.crummy.com/software/BeautifulSoup/bs4/doc/#entities

于 2012-08-08T00:29:45.787 回答
0

Theron 的答案可能是最好的,但请确保命名空间没有被摆弄。如果我没记错的话,HTML_ENTITIES是名称空间的一部分,BeautifulStoneSoup而不是名称空间的一部分BSfrom BeatifulSoup import *由于您调用的方式BeautifulSoup(html, etc)没有提及它来自的模块,因此看起来您已经完成了。

所以试着return BeautifulSoup(html, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)看看这是否有效。

于 2012-08-08T04:41:08.433 回答
0

您正在导入 BeautifulSoup,错误。偷偷做:

from BeautifulSoup import *

做就是了:

 import BeautifulSoup
于 2015-09-30T21:18:50.497 回答