python天气查询

这篇博客介绍了如何使用Python编程实现天气查询功能,通过调用中国天气的API获取城市天气信息,并详细说明了数据抓取和存储的过程。作者还分享了完整的GUI实现代码,以及提供了资源下载链接供读者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python实现天气查询程序

核心部分:
这里使用中国天气的接口
获取城市,存储至prolist和citylist

def ser():
    global daylist,maxlist,minlist,uptime,url,wealist,lifen,life1,life2,life3,images,l,fxlist,d
    url = "http://www.weather.com.cn/textFC/hd.shtml"
    listdept = []
    prolist = []
    citylist=[]
    base = "http://www.weather.com.cn"
    doc = pq(url=url, encoding="utf-8")
    daylist=[]
    for dept in doc(".lq_contentboxTab2 li a"):
        listdept.append(base+pq(dept).attr("href"))
    i=0
    for url in listdept:
        doc = pq(url=url, encoding="utf-8")
        provinces = doc(".conMidtab")[1]
        for province in provinces:
            citys = pq(province)("tr")
            i=2
            for city in citys:
                if citys.index(city) == 2:
                    prolist.append(pq(city[0])("a").html())
                try:
                    w = q = pq(city[8]).html()
                    m=0
                except:
                    m=1
                if m==0:
                    q = pq(city[1])("a").html()
                    if not q == None and not {
   "pro": pq(city[0])("a").html(), "city": q, "url": pq(city[8]).html()[10:59]} in citylist and m == 0:
                        citylist.append({
   "pro": pq(city[0])("a").html(), "city": pq(
                            city[1])("a").html(), "url": pq(city[8]).html()[10:59]})
                elif m == 1:
                    q = pq(city[0])("a").html()
                    try:
                        if len(citylist)==0:
                            raise IndexError
                        r=citylist[len(citylist)-1]
                        if not q == None and not {
   "pro": r["pro"], "city": q, "url": pq(city[7]).html()[10:59]} in citylist and m == 1:
                            citylist.append({
   "pro": r["pro"], "city": q, "url": pq(city[7]).html()[10:59]})
                    except:
                        pass

刚才的citylist中包含具体链接,重设url,存储doc并抓包(作者也不知道为什么天气和生活指数有问题):

    wealist=[]
    lifes=[]
    life=""
    for c in citylist:
        if c["city"] == pt:
            url=c["url"]
            break
    doc = pq(url=url,encoding="utf-8")
    r=doc(".t.clearfix")
    maxlist=[]
    minlist=[]
    wealist=[]
    daylist=[]
    flist=[]
    fxlist=[]
    uptime=""
    t=time.strftime('%Y-%m-%d', time.localtime(time.time()))
    for i in r:
        if not str(r(".skyid.lv3.sky"))== "":
           rp = r(".skyid.lv3.sky")
           print(1)
        elif not str(r(".skyid.lv3.on.sky") )== "":
            rp = (".skyid.lv3.on.sky")
            print(2)
        elif not str(r(".skyid.lv2.sky"))== "":
           rp = r(".skyid.lv2.sky")
           print(3)
        elif not str(r(".skyid.lv2.on.sky")) == "":
            rp = (".skyid.lv2.on.sky")
            print(4)
        elif not str(r(".skyid.lv1.sky")) == "":
           rp = r(".skyid.lv1.sky")
           print(5)
        elif not r(".skyid.lv1.on.sky")== "":
            rp = r(".skyid.lv1.on.sky")
            print(6)
        print(rp)
        for j in rp:
            if not pq(rp)("h1").html()==None:
                daylist.append(str(pq(j)("h1").html()))
            if not pq(rp)("p").html() == None:
                wealist.append(str(pq(j)("p").html()))
            mpo=rp(".tem")
            for z in mpo:
                if not pq(z)("span").html() == None:
                    if "℃" in str(pq(z)("span").html()):
                        maxlist.append(str(pq(z)("span").html()))
                    else:
                        maxlist.append(str(pq(z)("span").html())+"℃")
                if not pq(z)("i"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值