hWorks
hWorks

Reputation: 303

How do I insert an attribute using BeautifulSoup?

How do I insert an attribute using BeautifulSoup?

For example, insert border="1" as a <table> tag attribute.

EDIT:

I've answered my own question (for a particular class of table, even):

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

Upvotes: 3

Views: 4703

Answers (2)

Ra&#250;l Mart&#237;n
Ra&#250;l Mart&#237;n

Reputation: 4679

with node.attrs['myNewAttr'] = 'my_new_value' for example:

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

in this case:

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

will return

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

Upvotes: 2

Gaikokujin Kun
Gaikokujin Kun

Reputation: 399

How about:

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))

Do not forget to try lxml.html, it's fast and parse well.

Upvotes: 4

Related Questions