2009-01-20 22 views

Respuesta

34

Tal vez algo así podría funcionar? (No tengo un intérprete de Python frente a mí, por desgracia)

from BeautifulSoup import BeautifulSoup 
soup = BeautifulSoup('<p>Blah blah blah <a href="http://google.com">Google</a></p>') 
for a in soup.findAll('a'): 
    a['href'] = a['href'].replace("google", "mysite") 

result = str(soup) 
+0

Muchas gracias. Hubo algunos problemas, pero creo que es porque no tuvo la oportunidad de probar. Funciona genial. :-) –

25
from BeautifulSoup import BeautifulSoup 
soup = BeautifulSoup('<p>Blah blah blah <a href="http://google.com">Google</a></p>') 
for a in soup.findAll('a'): 
    a['href'] = a['href'].replace("google", "mysite") 
print str(soup) 

Esta es la solución de Lusid, pero ya que él no tenía un intérprete de Python frente a él, no estaba capaz de probarlo y tenía algunos errores. Solo quería publicar las condiciones de trabajo. ¡Gracias Lusid!

+2

Probablemente desee comprobar el caso de edge HTML con crappy donde el elemento a que está probando no tiene un href. –

+0

@Robert, sí, tienes razón. Me aseguraré de hacerlo. Gracias por el aviso. –

+0

@Evan, me alegro de poder ayudarte al menos a llegar allí. My Python es un poco oxidado. :) – Lusid

2

yo probamos este y funcionó, es más fácil de evitar el uso de expresiones regulares para hacer coincidir cada 'href':

comprobar que funciona, en bs4 docs.

Cuestiones relacionadas