找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 7076|回复: 2

[求助] 用beautifulsoup获取天气数据

1

主题

2

帖子

11

积分

贫民

积分
11
Dreamcjf 发表于 2014-6-4 23:53:01 | 显示全部楼层 |阅读模式
import urllib2
from bs4 import BeautifulSoup

f=open("szweather.txt","w")

for m in range(1,13):
    for d in range(1,32):

        if (m==2 and d>28):
            break
        elif (m in [4,6,9,11] and d>30):
            break

        timestamp='2013'+str(m)+str(d)
        print "getting data for"+timestamp
        url="http://www.wunderground.com/history/airport/ZGSZ/2013/"+str(m)+"/"+str(d)+"/DailyHistroy.html"
        page=urllib2.urlopen(url)

        soup=BeautifulSoup(page)
        dayTemp=soup.findAll(attrs={"class":"wx-value"})[2].span.string

        if len(str(m))<2:
            mStamp='0'+str(m)
        else:
            mStamp=str(m)

        if len(str(d))<2:
            dStamp='0'+str(d)
        else:
            dStamp=str(d)
   
        timestamp='2013'+mStamp+dStamp

        f.write(timstamp+','+dayTemp+'\n')

f.close()
运行后提示:Traceback (most recent call last):  File "C:\Users\dream\Desktop\get-weather-data.py", line 20, in
dayTemp=soup.findAll(attrs={"class":"wx-value"})[2].span.stringIndexError: list index out of range求解!!


回复

使用道具 举报

0

主题

6

帖子

6

积分

贫民

积分
6
ping0205 发表于 2014-6-5 13:19:16 | 显示全部楼层
说明结果为空或者没有那么多数据,你的url有问题,当m=1,d=1时,网址:http://www.wunderground.com/hist ... 1/DailyHistroy.html的数据时没有{class="wx-value"}的,所以结果为空,那么就会out of range.
回复 支持 反对

使用道具 举报

1

主题

2

帖子

11

积分

贫民

积分
11
Dreamcjf  楼主| 发表于 2014-6-5 21:04:28 | 显示全部楼层
ping0205 发表于 2014-6-5 13:19
说明结果为空或者没有那么多数据,你的url有问题,当m=1,d=1时,网址:http://www.wunderground.com/histor ...

已修改了url:url="http://www.wunderground.com/history/airport/ZGSZ/2013/"+ str(m) +"/" +str(d) +"/DailyHistroy.html?req_city=NA&req_state=NA&req_statename=NA"
但依然是同样的报错。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表