2016-03-30 23 views
5

Qui è la parte della pagina web:BeautifulSoup non riesce a trovare un tag per la sua classe

<div class="MPinfo"> 
    <ul class="frontList"> 
     <li>some text</li> 
     <li>some text</li> 
     <li>some text</li> 
     <li>some text</li> 
     <li>some text</li> 
     <li>some text 
      <a href="/some_local_link/8976">some text</a>; 
      <a href="/some_local_link/8943">some text</a>; 
     </li> 
     <li>E-mail: 
      <a href="mailto:[email protected]">[email protected]</a> 
     </li> 
    </ul> 
</div> 

Sto cercando di ottenere il div per la sua classe e poi estrarre il collegamento e-mail solo per e-mail se stesso come : [email protected]

page = urllib.urlopen(link) 
soup = BeautifulSoup(page.read()) 
print soup.find('div', attrs={'class': 'MPinfo'}) 

ho provato diversi modi per ottenere il div ma restituisce lista vuota o Nessuno

+2

Funziona con l'HTML di esempio e uno dei 3 parser HTML supportati. Forse la pagina HTML complessiva è malformata? –

+0

L'ho eseguito tramite il validatore W3C e mi dà errore alla riga 255 ma il codice html di esempio è molto sopra http://parliament.bg/bg/MP/2518 –

+1

Ho caricato la pagina con 'r = requests.get (...)', ha creato una zuppa con 'soup = BeautifulSoup (r.content, parser)' ed è stata in grado di ottenere il 'div' senza problemi, usando uno dei 3 parser supportati. Non riesco a riprodurre il tuo problema, mi dispiace. –

risposta

0

è possibile selezionare tutti li sotto il div, sarà una lista, quindi puoi selezionare l'ultimo elemento li come [-1]

>>> soup.find("div",attrs={"class":"MPinfo"}).find_all("li")[-1].a.text 
'[email protected]'