python BeautifulSoup无法设置属性,正在尝试替换标记值

2024-10-02 00:39:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在检查span标记是否有字符串“~”,如果有,我想用“0”替换它

我有数百个span标记,我想更改span.text值,因为我想将IF语句复制到整个代码中的许多地方,所以将var001编码到IF语句中并不难

我该怎么做

我的代码

span = soup.find("span", id="id001")
if span.text in  ['~']:
    span.text = 0
var001 = span.text

但这会产生错误

AttributeError: can't set attribute

Tags: 字符串代码text标记id编码if地方
1条回答
网友
1楼 · 发布于 2024-10-02 00:39:34

对于bs4.7.1+,您可以使用:contains来标识相关的标记,并利用string.replace_with来更改.text。~需要转义以区别于一般同级组合符

from bs4 import BeautifulSoup as bs

html = '''<span>some text ~ </span>
<span>some text</span>
<span>some ~ text</span>
<span>some text</span>
<span>~ some text</span>'''

soup = bs(html, 'lxml')

for t in soup.select('span:contains(\~)'):
    t.string.replace_with('0')
print(soup)

相关问题 更多 >

    热门问题