Python:BeautifulSoup .find_all()打印空[]?

时间:2015-04-20 01:52:59

标签: python class parsing beautifulsoup findall

我试图用wunderground抓住预测的高/低温:

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()的东西因为我刚回到空括号:

[]

我很清楚我需要在操作后清理结果。

1 个答案:

答案 0 :(得分:2)

网页正在使用javascript进行更新,因此结果不在页面元素中。

关于网站的工作原理,最好使用split和json,或者在网站上进行更深入的分析,找到用于返回正在使用的javascript框架的数据的调用。该网站。

或者只使用api:http://www.wunderground.com/weather/api/d/docs?d=data/geolookup#zip_or_postal_code

基本上它是空的,因为javascript会更新页面上的元素。

然而,你可以使用像selenium这样的东西来打开页面并运行javascript。

然后你的电话会像你预期的那样工作。