我试图用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()
的东西因为我刚回到空括号:
[]
我很清楚我需要在操作后清理结果。
答案 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。
然后你的电话会像你预期的那样工作。