2016-08-15 3 views
0

Я работаю над скриптом в python с помощью BeautifulSoup, чтобы найти некоторые данные из html. Я получил пакет и так смущен, мой мозг перестал работать, я не имею ни малейшего представления, как царапать полный адрес этих элементов:BeautifulSoup confused

<li class="spacer"> 
<span>Location:</span> 
<br>Some Sample Street<br> 
Abbeville, AL 00000 
</li> 

Я пытался что-то вроде location = info.find('li', 'spacer').text , но до сих пор я получил только строку "Место нахождения: " . Пробовал со многими родителями - отношения с детьми, но до сих пор не могу понять, как это сделать.

Может кто-нибудь мне помочь?

+0

Работает для меня на этом примере HTML. Вы уверены, что имеете полный адрес в фактическом HTML, с которым работаете? – alecxe

+0

Это то же самое, что и в моей части HTML, для меня печатает только «Location:» – Ukii

+1

@Ukii, добавьте ссылку на сайт, что вы разместили '.find ('li', 'spacer'). очевидно, что к этому вопросу больше, чем вы нам показали. –

ответ

0

Попробуйте это:

locations = info.find_all('span',Class_="spacer") 
for location in locations: 
    print (location.text) 
+0

Даже если я пытаюсь места = soup.find_all («пядь», класс _ = «спейсер») для размещения в местах: печати (location.text) это ничего не – Ukii

+0

печать мне не нужно Расположение : Я сказал, что получаю это всегда, но мне нужны эти два элемента. – Ukii

0

Вы можете использовать nextSibling для перехода к следующему элементу внутри li и после span

Пример:

from bs4 import BeautifulSoup as Soup 

html_text= """ 
<li class="spacer"> 
<span>Location:</span> 
<br>Some Sample Street<br> 
Abbeville, AL 00000 
</li> 
""" 
location_address = "" 

html_souped = Soup(html_text, 'html.parser') 

# get the next sibling after the span: 
siblings = html_souped.find('li', {'class': 'spacer'}).find('span').nextSibling 

# iterate until the end of the li element: 
while siblings.nextSibling is not None: 
    # add the text to the location: 
    location_address += siblings.nextSibling.text 
    siblings = siblings.nextSibling 

# print the stripped location: 
print('location: ' + location_address.strip()) 

Это будет работать отлично для всего списка, если список имеет тот же формат, что и в данном примере.