如何在new_tag()中指定类属性?

时间:2014-01-12 03:04:09

标签: python beautifulsoup

我目前正在使用BeautifulSoup4和Python 2.7,并尝试使用某个class属性实例化一个新标记。我知道如何使用style

等属性
div = soup.new_tag('div', style='padding-left: 10px', attr2='...', ...)

但是,如果我尝试使用class保留字执行此操作,则会收到错误(语法无效)。

div = soup.new_tag('div', class='left_padded', attr2='...', ...) # Throws error

我也试过'class'='...',但这也无效。我可以使用Class='...',但输出不符合(所有小写属性名称)。

我知道我可以做以下事情:

div = soup.new_tag('div', attr2='...', ...)
div['class'] = 'left_padded'

但这看起来并不优雅或直观。我在文档和Google上的研究都没有结果,因为“类”是一个与我想要的搜索结果无关的常用关键字。

我是否可以将class指定为new_tag()中的属性?

1 个答案:

答案 0 :(得分:5)

这是一个选项:

>>> attributes = {'class': 'left_padded', 'attr2': '...'}
>>> div = soup.new_tag('div', **attributes)
>>> div
<div attr2="..." class="left_padded"></div>

使用attributes运算符将**字典解压缩为关键字参数,对应**attrs函数签名中的soup.new_tag()。不过,我认为这不比使用div['class']的解决方案更优雅。