2014-09-11 14 views
5

Sto attraversando un periodo difficile per ottenere da BeautifulSoup alcuni dati per me. Qual è il modo migliore per accedere alla data (i numeri effettivi, 2008) da questo esempio di codice? È la prima volta che utilizzo BeautifulSoup, ho capito come raschiare gli URL fuori dalla pagina, ma non riesco a restringerlo per selezionare solo la parola Date, e quindi per restituire solo qualsiasi data numerica successiva (nel dd parentesi). È ciò che sto chiedendo anche possibile?Utilizzare BeautifulSoup per ottenere un valore dopo un tag specifico

<div class='dl_item_container clearfix detail_date'> 
    <dt>Date</dt> 
    <dd> 
     2008 
    </dd> 
</div> 
+0

Mostra cosa hai provato? – fledgling

+0

Ho provato a usare soup.find_all in vari modi, anche soup.select ("dt"), che ottiene tutte le etichette, ma voglio quello che stanno etichettando nelle parentesi dd, ma senza le etichette, se io soup.select ("dd"), ottengo una tonnellata di valori che non desidero, voglio solo il valore specifico per l'etichetta che sto cercando. – knames

risposta

11

Trova il dt tag by text e trovare la next dd sibling:

soup.find('div', class_='detail_date').find('dt', text='Date').find_next_sibling('dd').text 

Il codice completo:

from bs4 import BeautifulSoup 

data = """ 
<div class='dl_item_container clearfix detail_date'> 
    <dt>Date</dt> 
    <dd> 
    2008 
    </dd> 
</div> 
""" 

soup = BeautifulSoup(data) 
date_field = soup.find('div', class_='detail_date').find('dt', text='Date') 
print date_field.find_next_sibling('dd').text.strip() 

Stampe 2008.

Problemi correlati