修改标签美丽的汤

时间:2014-05-13 02:56:04

标签: python html beautifulsoup

我正在尝试使用美丽的汤来修改python中的每个标签。有一堆不同的td标签,我试图将每个带有某个属性的td标签转换为其他标签。例如,有

<td class="station"> ... </td>

上面的标签我不想改变,但是有

<td class="menuitem"> ... </td>

我想修改所有这些

<td class="menuitem"> ... </td>

类似

<body class="menuitem"> ... </body>

只是为了澄清我想要每一个

<td class="menuitem"> ... </td>

改变了,而不仅仅是第一个。

预先感谢您的帮助!! :)

1 个答案:

答案 0 :(得分:2)

我相信我会这样做:

for tag in soup.select('td.menuitem'):
    tag.name = 'body' # mutates the tag in `soup`!

(在这里使用css选择器,相当于soup.find_all('td', attrs={'class':'menuitem'})

演示:

s = '''<td class="station"> no touchies </td><td class="menuitem"> foo </td><td class="menuitem"> bar </td><td class="menuitem"> baz </td>'''

soup = BeautifulSoup(s)

soup
Out[111]: <html><body><td class="station"> no touchies </td><td class="menuitem"> foo </td><td class="menuitem"> bar </td><td class="menuitem"> baz </td></body></html>

for tag in soup.select('td.menuitem'):
    tag.name = 'body'

soup
Out[113]: <html><body><td class="station"> no touchies </td><body class="menuitem"> foo </body><body class="menuitem"> bar </body><body class="menuitem"> baz </body></body></html>