替换类名BeautifulSoup

0 投票
1 回答
3110 浏览
提问于 2025-04-28 09:59

我正在尝试解析一个HTML文档,想请大家帮帮我。

<tr height="21" style="height:15.75pt">
       <td class="style14" height="21" style="height: 15.75pt">
        71
       </td>
       <td class="style14">
        Breakeven
       </td>
       <td class="style10">
        The Script
        <span style="mso-spacerun:yes">
        </span>
       </td>
      </tr>

我想把标签的类名从'style10'改成'style14'。但是,当我把它改成style14后,程序却没有识别到这个变化。所以,“脚本”没有被打印出来。

这是我的代码:

search =soup.find('td', class_='style10')
search['class'] = 'style14'

for each in search: 
    print each.text

有没有办法做到这一点呢?

暂无标签

1 个回答

1

你正在循环遍历一个元素,而这个元素只列出了它的子元素。因为你选择的标签没有包含其他带文本的子元素(<span style="mso-spacerun:yes">这个元素是空的),所以你什么也看不见。

其实不用循环,直接获取文本就可以了:

print search.text

你改的类并没有在这里出问题。

示例:

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('''\
... <tr height="21" style="height:15.75pt">
...        <td class="style14" height="21" style="height: 15.75pt">
...         71
...        </td>
...        <td class="style14">
...         Breakeven
...        </td>
...        <td class="style10">
...         The Script
...         <span style="mso-spacerun:yes">
...         </span>
...        </td>
...       </tr>
... ''')
>>> search =soup.find('td', class_='style10')
>>> search['class']
['style10']
>>> search['class'] = 'style14'
>>> search['class']
'style14'
>>> list(search)
[u'\n        The Script\n        ', <span style="mso-spacerun:yes">
</span>, u'\n']
>>> search.text
u'\n        The Script\n        \n\n'

撰写回答