Tengo que ser capaz de modificar cada enlace en un documento HTML. Sé que tengo que usar el SoupStrainer pero no estoy 100% positiva sobre cómo implementarlo. Si alguien me podría dirigir para un buen recurso o proporcionar un ejemplo de código, sería muy apreciada.

Gracias.

OriginalEl autor Evan Fosmark | 2009-01-20

3 Comentarios

  1. 37

    Tal vez algo como esto iba a funcionar? (No tengo un intérprete de Python en frente de 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)

    OriginalEl autor Lusid

  2. 28
    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)

    Este es Lusid la solución, pero puesto que él no tiene un intérprete de Python en frente de él, él no era capaz de probarlo, y tuvo un par de errores. Yo sólo quería publicar las condiciones de trabajo. Gracias Lusid!

    Usted probablemente desee comprobar el cutre-HTML caso extremo donde el elemento que se está probando no tiene un href.
    sí tienes razón. Voy a estar seguro para hacerlo. Gracias por el aviso.
    me alegro de que fue capaz, al menos, ayudar a llegar allí. Mi Python es un poco en el rusty lado. 🙂
    soup.prettify() es más fácil para los ojos humanos que str(soup).
    soup.findAll('a', href=True) asegura que a['href'] obras

    OriginalEl autor Evan Fosmark

  3. 5

    Lo probé y funcionó, es más fácil evitar el uso de regexp para la correspondencia de cada 'href':

    from bs4 import BeautifulSoup as bs
    soup = bs(htmltext)
    for a in soup.findAll('a'):
        a['href'] = "mysite"

    Echarle un vistazo, en bs4 docs.

    OriginalEl autor Aziz Alto

Dejar respuesta

Please enter your comment!
Please enter your name here