Usando BeautifulSoup para extraer elementos de lista dl y dd específicos
La primera vez que publico. Estoy usando BeautifulSoup 4 y python 2.7 (pycharm). Tengo una página web que contiene elementos y necesito extraer elementos específicos donde las etiquetas son 'Salario:' o 'Fecha:', la página contiene varias listas.
El problema: parece que no puedo identificar y extraer texto específico. He buscado en este sitio y lo he intentado sin éxito.
Ejemplo html:
<dl><dt>Date:</dt><dd>13 September 2015</dd><dt>Salary:</dt><dd>Starting at £40,130 per annum.</dd></dl><dl><dt>Date:</dt><dd>15 December 2015</dd><dt>Salary:</dt><dd>Starting at £22,460 per annum.</dd></dl><dl><dt>Date:</dt><dd>10 January 2014</dd><dt>Salary:</dt><dd>Starting at £18,160 per annum.</dd></dl>
Código que he intentado sin éxito:
r = requests.get("http://www.mywebsite.com/test.html")
soup = BeautifulSoup(r.content, "html.parser")
dl_data = soup.find_all("dl")
for dlitem in dl_data:
print dlitem.find("dt",text="Date:").parent.findNext("dd").contents[0]
print dlitem.find("dt",text="Salary:").parent.findNext("dd").contents[0]
Resultado Esperado:
13 September 2015
15 December 2015
10 January 2014
Starting at £40,130 per annum.
Starting at £22,460 per annum.
Starting at £18,160 per annum.
Resultado actual:
print dlitem.find("dt",text="Date:").parent.findNext("dd").contents[0]
AttributeError: 'NoneType' object has no attribute 'parent'
He intentado numerosas variaciones de este código y he dado vueltas en círculos, descubrí cómo imprimir todos los elementos dd en la pantalla, ¡pero no elementos dd específicos!
Gracias