1

我有一个 HTML 文件,我必须在其中一个 td 类中插入一些文本/变量。
称为“foo”的 td 类有时会得到一个 ID,有时只是得到一个类。

<td align="left" class="foo" style="white-space:nowrap;">  </td>  

文本将进入空白区域。空白空间是否也保留并不重要,正如我stripped_strings稍后使用的那样。无论如何,这只保留字符串/数据。
(这是一些企业软件生成的表格。)

找到了这个 SO Question,但我无法弄清楚如何让它在 td 类上工作。

4

2 回答 2

3

初始化汤:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(s) #s is the html string you get

首先你应该找到你想要的标签:

>>> td = soup.find('td', attrs={'class':'foo'})
>>> td
<td align="left" class="foo" style="white-space:nowrap;"> </td>

插入文本:

>>> td.string = 'hello'
>>> td
<td align="left" class="foo" style="white-space:nowrap;">hello</td>

添加属性:

>>> td['id'] = 'id1'
>>> td
<td align="left" class="foo" id="id1" style="white-space:nowrap;">hello</td>

添加一个类:

>>> td['class'].append('foo2')
>>> td
<td align="left" class="foo foo2" id="id1" style="white-space:nowrap;">hello</td>

有关更多信息,您应该阅读文档

于 2013-07-12T08:21:37.083 回答
2

试试下面的代码:

import bs4

soup = bs4.BeautifulSoup('<td align="left" class="foo" style="white-space:nowrap;">  </td>')
for td in soup.findAll('td', {'class': 'foo'}):
    td.attrs['title'] = 'spam'
    td.append('egg text')
print soup
于 2013-07-12T08:21:00.723 回答