gpt4 book ai didi

python - BeautifulSoup 插入 HTML 数据属性

转载 作者:行者123 更新时间:2023-12-01 03:58:36 26 4
gpt4 key购买 nike

我试图在我的汤中插入一个新的 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
<小时/>

我在 google 上搜索了这个错误,最终找到了一个 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>

这是一个已知的错误/限制还是我遗漏了什么?任何提示表示赞赏!

最佳答案

您的属性包含破折号,因此您需要使用 [] 的不同方法

>>> tag2 = soup.new_tag("a")
>>> tag2["data-toggle"] = "pill"
>>> tag2
<a data-toggle="pill"></a>

您还可以这样做:

>>> tag2.attrs["data-toggle"] = "pill"
>>> tag2
<a data-toggle="pill"></a>

关于python - BeautifulSoup 插入 HTML 数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37003802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com