【发布时间】:2016-08-28 11:29:58
【问题描述】:
我试图在我的汤中插入一个新的 HTML 标记,但不知道如何继续。问题是我希望标签具有“data-toggle”属性,但 BeautifulSoup 似乎没有处理这个问题。
In [79]: tag = soup.new_tag("li")
In [80]: tag
Out[80]: <li></li>
In [81]: tag2 = soup.new_tag("a")
In [82]: tag.append(tag2)
In [83]: tag
Out[83]: <li><a></a></li>
In [89]: tag = soup.new_tag("li")
In [90]: tag2 = soup.new_tag("a",href="#")
In [91]: tag2 = soup.new_tag("a",data-toggle="pill")
File "<ipython-input-91-554760df4122>", line 1
tag2 = soup.new_tag("a",data-toggle="pill")
^
SyntaxError: keyword can't be an expression
我用谷歌搜索了这个错误并最终在一个 bs4 文档页面 (https://www.crummy.com/software/BeautifulSoup/bs4/doc/) 上声明“某些属性,例如 HTML 5 中的 data-* 属性,其名称不能用作关键字参数”,而是建议使用 attrs={"data-foo": "value"}。关键是它确实适用于某些方法(例如:find_all),但不适用于 new_tag()。
In [97]: tag2 = soup.new_tag("a",attrs={"data-toggle":"pill"})
In [98]: tag2
Out[98]: <a attrs="{'data-toggle': 'pill'}"></a>
这是一个已知的错误/限制还是我遗漏了什么? 任何提示表示赞赏!
【问题讨论】:
标签: python beautifulsoup