Estoy intentando usar BeautifulSoup para analizar a través de un árbol DOM y extraer los nombres de los autores. A continuación se muestra un fragmento de HTML para mostrar la estructura del código que voy a raspar.Analizando datos usando BeautifulSoup en Python
<html>
<body>
<div class="list-authors">
<span class="descriptor">Authors:</span>
<a href="/find/astro-ph/1/au:+Lin_D/0/1/0/all/0/1">Dacheng Lin</a>,
<a href="/find/astro-ph/1/au:+Remillard_R/0/1/0/all/0/1">Ronald A. Remillard</a>,
<a href="/find/astro-ph/1/au:+Homan_J/0/1/0/all/0/1">Jeroen Homan</a>
</div>
<div class="list-authors">
<span class="descriptor">Authors:</span>
<a href="/find/astro-ph/1/au:+Kosovichev_A/0/1/0/all/0/1">A.G. Kosovichev</a>
</div>
<!--There are many other div tags with this structure-->
</body>
</html>
Mi punto de confusión es que cuando lo haga soup.find, se encuentra la primera aparición de la etiqueta div que estoy buscando. Después de eso, busco todas las etiquetas de enlace 'a'. En esta etapa, ¿cómo extraigo los nombres de los autores de cada una de las etiquetas de enlace y las imprimo? ¿Hay alguna manera de hacerlo usando BeautifulSoup o necesito usar Regex? ¿Cómo continúo iterando sobre cualquier otra etiqueta div y extraigo los nombres de los autores?
import re
import urllib2,sys
from BeautifulSoup import BeautifulSoup, NavigableString
html = urllib2.urlopen(address).read()
soup = BeautifulSoup(html)
try:
authordiv = soup.find('div', attrs={'class': 'list-authors'})
links=tds.findAll('a')
for link in links:
print ''.join(link[0].contents)
#Iterate through entire page and print authors
except IOError:
print 'IO error'
Y si hay más etiquetas div, ¿cómo puedo iterar sobre esas? – GobiasKoffi
Si busca por clase CSS, obtiene una lista de elementos y puede iterar con un ciclo for (ver: http://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-by-css- clase). Haga algo como: 'authordiv = soup.find ('div', class_ = 'list-authors')'. – eNord9