Извлечение числового значения без идентификатора класса в html с использованием BeautifulSoup в python

Я хочу извлечь значение «Расчетное население с почтовым индексом в 2015 году» с веб-сайта городских данных для определенного региона (http://www.city-data.com/zips/17033.html). Я использовал BeautifulSoup для извлечения значения, но не смог добиться успеха.

Проблема в том, что с ним не связан идентификатор класса. Итак, я использовал «soup.find (text = re.compile («^ Расчетное население почтового индекса в 2015 году»))», но он возвращает только текст, а не числовое значение, которое равно «17 649».

Пожалуйста, найдите мой код ниже.

from bs4 import BeautifulSoup
import re
import urllib.request
with urllib.request.urlopen('http://www.city-data.com/zips/17033.html') as 
response:
    html = response.read()
    print("html", html)


soup = BeautifulSoup(html, "html.parser")
population=soup.find(text=re.compile("^Estimated zip code population in 2015"))
print(population)

Какие-либо предложения? Заранее спасибо.


person June Shelter    schedule 22.09.2017    source источник
comment
Если на вашем компьютере установлена ​​библиотека lxml, то для вас есть решение. Regex для этого не понадобится. Дай мне знать.   -  person SIM    schedule 23.09.2017
comment
Привет Шахин, Спасибо за ваше предложение. Да он у меня установлен. Я последовал тому, что предложил один из других участников, и я получаю результат. Но мне интересно узнать, как работает lxml. Пожалуйста, дайте мне знать, как использовать lxml для этого?   -  person June Shelter    schedule 25.09.2017


Ответы (1)


Найдите свой элемент как тег b и найдите его next_sibling, чтобы получить нужный текст.

Пример:

population = soup.find("b", text=re.compile("^Estimated zip code population in 2015"))
print population.get_text(), population.next_sibling

Выходы:

Расчетное население с почтовым индексом в 2015 году: 17 649 человек.

person Zroq    schedule 23.09.2017
comment
zroq, спасибо большое, все заработало. Я очень ценю это. - person June Shelter; 25.09.2017