2011-10-11 14 views

Respuesta

12

Primero abra un documento de prueba y abrir el analizador con BeautifulSoup:

>>> from BeautifulSoup import BeautifulSoup 
>>> doc = '<html><body><div><a href="something">yep</a></div><div><a href="http://www.nhl.com/ice/boxscore.htm?id=3">somelink</a></div><a href="http://www.nhl.com/ice/boxscore.htm?id=7">another</a></body></html>' 
>>> soup = BeautifulSoup(doc) 
>>> print soup.prettify() 
<html> 
<body> 
    <div> 
    <a href="something"> 
    yep 
    </a> 
    </div> 
    <div> 
    <a href="http://www.nhl.com/ice/boxscore.htm?id=3"> 
    somelink 
    </a> 
    </div> 
    <a href="http://www.nhl.com/ice/boxscore.htm?id=7"> 
    another 
    </a> 
</body> 
</html> 

A continuación, podemos buscar todas las <a> etiquetas con un atributo href comenzando con http://www.nhl.com/ice/boxscore.htm?id=. Se puede utilizar una expresión regular para ello:

>>> import re 
>>> soup.findAll('a', href=re.compile('^http://www.nhl.com/ice/boxscore.htm\?id=')) 
[<a href="http://www.nhl.com/ice/boxscore.htm?id=3">somelink</a>, <a href="http://www.nhl.com/ice/boxscore.htm?id=7">another</a>] 
+0

Wow gracias. Supongo que la documentación de beautifulsoup presupone fluidez en Regex. Gracias por mostrarme que –

+1

@JenScott Si esto respondió su pregunta, debe aceptarlo. – serk

+0

Bien, pero ¿y si el nombre de su atributo se llama "clase"? – Wajih

2

puede que no necesite BeautifulSoup ya que su búsqueda es específica

>>> import re 
>>> links = re.findall("http:\/\/www\.nhl\.com\/ice\/boxscore\.htm\?id=.+", str(doc)) 
Cuestiones relacionadas