如何在Beautiful Soup中重命名类

0 投票
1 回答
665 浏览
提问于 2025-04-17 21:46

我可以通过下面的代码找到所有属于某个类的标签:

soup.find_all('div', attrs={'class': 'Foo'})

那么我该怎么把类名从'Foo'改成'Bar'呢?我的类名都是独一无二的,所以我不用担心会改到文本里的其他内容。我试过下面的代码:

for changethis in soup.find_all('div', attrs={'class': 'Foo'}):
     changethis.find("Foo").replaceWith("Bar")

但是没有成功。我该怎么做呢?

1 个回答

3

你可以使用下面的代码:

from bs4 import BeautifulSoup

soup = BeautifulSoup("""
    <div class="foo bar"></div>
    <div class="cabbage foo"></div>
    <div class="bar"></div>
""")

for div in soup.find_all('div', class_='foo'):
    pos = div.attrs['class'].index('foo')
    div.attrs['class'][pos] = 'bar'    

print soup

这样会得到:

<html><body><div class="bar bar"></div>
<div class="cabbage bar"></div>
<div class="bar"></div>
</body></html>

撰写回答