我正在尝试向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>
答案 0 :(得分:0)
您的tag['attr'] = 'new'
似乎工作正常。问题是print(tag.contents)
将在修改后代之前以递归方式打印部分文档。
简单的解决方法是首先修改一个文档,然后在结尾处进行一次print(soup)
调用。