Python BeautifulSoup:将属性插入标签

时间:2015-06-10 07:02:54

标签: python html

我正在尝试向html doc中的所有嵌套表插入一个新属性。我正在尝试使用下面的代码,但它没有将属性插入到所有表标记中。我真的很感激任何帮助。

输入HTML代码:

<html>
<head>
<title>Test</title>
</head>
<body>
<div>
<table>
<tr>t<td><table></table></td></tr>
<tr>t<td><table></table></td></tr>
<tr>t<td><table></table></td></tr>
</table>
</div>
</body>
</html>

代码:

from bs4 import BeautifulSoup
import urllib2

html = urllib2.urlopen("file://xxxxx.html").read()

soup = BeautifulSoup(html)

for tag in soup.find_all(True):
        if (tag.name == "table"):
                tag['attr'] = 'new'
                print(tag)
        else:
                print(tag.contents)

输出HTML代码:

<html>
<head>
<title>Test</title>
</head>
<body>
<div>
<table attr="new">
<tr>t<td><table attr="new"></table></td></tr>
<tr>t<td><table attr="new"></table></td></tr>
<tr>t<td><table attr="newe"></table></td></tr>
</table>
</div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

您的tag['attr'] = 'new'似乎工作正常。问题是print(tag.contents)将在修改后代之前以递归方式打印部分文档。

简单的解决方法是首先修改一个文档,然后在结尾处进行一次print(soup)调用。