Cómo agregar una etiqueta después de un enlace con BeautifulSoup

A partir de una entrada HTML como esta:

this if foo this if bar

utilizando BeautifulSoup, me gustaría cambiar este Html en:

 

this if fooOK this if barOK

¿Es posible hacer esto usando BeautifulSoup?

Algo como:

 from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html) for link_tag in soup.findAll('a'): link_tag = link_tag + 'OK' #This obviously does not work 

Tienes la idea correcta. Simplemente haga replaceWith los tipos, y replaceWith .

 from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html) for link_tag in soup.findAll('a'): link_tag.replaceWith( link_tag.prettify() + 'OK' ) print soup 

debería darle:

 

this if foo OK this if bar OK

Puedes usar el inserto de BeautifulSoup para agregar el elemento en el lugar correcto:

 from BeautifulSoup import BeautifulSoup soup = BeautifulSoup(html) for link_tag in soup.findAll('a'): link_tag_idx = link_tag.parent.contents.index(link_tag) link_tag.parent.insert(link_tag_idx + 1, 'OK') 

Esto funciona para el ejemplo que da, aunque no estoy seguro de que sea el único método o el más eficiente.