2014-09-11 14 views
5

Bardzo trudno jest mi uzyskać BeautifulSoup, aby zeskrobać dla mnie dane. Jaki jest najlepszy sposób uzyskania dostępu do daty (rzeczywiste liczby, 2008) z tego przykładu kodu? Korzystam z Beautifulsoup po raz pierwszy, zorientowałem się, jak usunąć adresy URL ze strony, ale nie mogę go zawęzić, aby wybrać tylko słowo Date, a następnie zwrócić tylko datę podaną w dd nawiasy). Czy to, o co proszę, jest możliwe?Użyj BeautifulSoup, aby uzyskać wartość po określonym tagu.

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

Pokaż, co próbujesz? – fledgling

+0

Próbowałem używać soup.find_all na różne sposoby, również soup.select ("dt"), który pobiera wszystkie etykiety, ale chcę to, co mają etykiety w nawiasach dd, ale bez etykiet, jeśli ja soup.select ("dd"), dostaję tonę wartości, których nie chcę, chcę tylko wartość specyficzną dla etykiety, której szukam. – knames

Odpowiedz

11

Znajdź dt tag by text i znaleźć next dd sibling:

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

kompletny kod:

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() 

Drukuje 2008.

Powiązane problemy