我最近在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的变化。我该如何解决这个问题?
答案 0 :(得分:5)
传入的HTML或XML实体始终转换为 相应的Unicode字符。美丽的汤3有很多 处理实体的重叠方式已被删除。 BeautifulSoup构造函数不再识别smartQuotesTo 或convertEntities参数。(Unicode,Dammit仍有 smart_quotes_to,但它的默认值现在是将智能引号转换为 的Unicode。)
如果要将这些Unicode字符转换回HTML实体 输出,而不是将它们变成UTF-8字符,你需要 使用output formatter。
来源:http://www.crummy.com/software/BeautifulSoup/bs4/doc/#entities
答案 1 :(得分:0)
Theron的答案可能是最好的,但请确保名称空间不会被摆弄。如果我没记错,HTML_ENTITIES
是BeautifulStoneSoup
命名空间的一部分,而不是BS
命名空间。由于您在不参考其来源的模块的情况下调用from BeatifulSoup import *
的方式,看起来您已完成BeautifulSoup(html, etc)
。
请尝试return BeautifulSoup(html, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)
并查看是否有效。
答案 2 :(得分:0)
您正在导入BeautifulSoup,错误。坚持做:
from BeautifulSoup import *
只是做:
import BeautifulSoup