如何使用BeautifulSoup插入属性?

3 投票
2 回答
4583 浏览
提问于 2025-04-16 11:32

我该如何使用BeautifulSoup插入一个属性呢?

比如说,想要在一个<table>标签中插入border="1"这个属性。

补充说明:

我已经自己解决了这个问题(针对某一类表格):

inTopic = urllib2.urlopen("file:///C:/test/test.html")
content = BeautifulSoup(inTopic)

tlist = content.findAll('table', "myTableClass")
for tbl in tlist:
    tbl['border'] = "1"
    print tbl.attrs

2 个回答

2

使用 node.attrs['myNewAttr'] = 'my_new_value' 这个方法来设置一个新的属性,比如:

content = BeautifulSoup(text, 'html.parser')
links = content.findAll('a') 
for node in links:
    node.attrs['myNewAttr'] = 'my_new_value'

在这个例子中:

<ul>
   <li><a>text</a</li>
   <li><a>text</a</li>
</ul>

将会返回

<ul>
   <li><a myNewAttr="my_new_value">text</a</li>
   <li><a myNewAttr="my_new_value">text</a</li>
</ul>
4

你觉得这样怎么样:

inTopic = urllib2.urlopen('http://stackoverflow.com/questions/4951331/how-do-i-insert-an-attribute-using-beautifulsoup')
content = BeautifulSoup.BeautifulSoup(inTopic)
tlist = content.findAll('table')
for tbl in tlist:
    tbl.attrs.append(('border', 1))

别忘了试试 lxml.html,它速度快,解析效果很好。

撰写回答