如何在Beautiful Soup中重命名类
我可以通过下面的代码找到所有属于某个类的标签:
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>