2015-04-20 2 views
0

Я пытаюсь захватить прогнозный высокий/низкий темп от Wunderground с этим:Python: BeautifulSoup .find_all() печатает пустые []?

from bs4 import BeautifulSoup 
from urllib2 import urlopen 
zipcode = raw_input("Type in your zipcode: ") 
url_end = zipcode + ".1.99999" 

base_url = "http://www.wunderground.com/weather-forecast/zmw:" + url_end 

my_html = urlopen(base_url) 
html_text = my_html.read() 
my_soup = BeautifulSoup(html_text) 

high = my_soup.find_all("span", class_="high") 

low = my_soup.find_all("span", class_="low") 

print high 

Он спросит ваш почтовый индекс, вы даете ему, он должен выплюнуть обратно все прогнозируемые высокие/низкие временные секретарь, как отображается на на веб-странице, но я новичок в BS4 и я четко Мессинг что-то с .find_all(), потому что я просто получить обратно пустые скобки:

[] 

Я много знать, мне нужно будет убирать результаты раз в рабочем состоянии.

+0

Почему существует '_' после' класса'? Это опечатка? – Anzel

+1

@ Anzel, который является синтаксисом BS4 для обозначения причин конфликтов. – jmunsch

+0

Ах круто, обычно я использую словарь и избегаю кваргов, ура. Кстати, запрашивает ли сайт запрос без ** пользовательского агента **? проверьте свой ответ 'html_text', и вы можете попробовать добавить его и посмотреть. – Anzel

ответ

2

Веб-страница обновляется с помощью javascript, поэтому результаты не входят в элементы страницы.

Как работает сайт, возможно, лучше использовать split и json или сделать более глубокий анализ на сайте, чтобы найти вызов, который используется для возврата данных для используемой инфраструктуры javascript на сайте.

Или просто использовать API: http://www.wunderground.com/weather/api/d/docs?d=data/geolookup#zip_or_postal_code

В основном это пусто, поскольку Javascript обновляет элементы на странице.

Вы могли бы использовать что-то вроде селена, чтобы открыть страницу и запустить javascript.

И тогда ваш звонок будет работать так, как вы ожидали.

Смежные вопросы