精华内容
下载资源
问答
  • python获取天气数据

    千次阅读 2018-06-05 23:22:37
    无意中发现了www.tianqi.com这个天气查询网站,这个网站结构统一,并且没有在robot.txt中规定相关规则,所以我编写了一个脚本用来获取指定地点的实时天气,主要用于学习编程技巧,请不要恶意爬取数据!import ...

    无意中发现了www.tianqi.com这个天气查询网站,这个网站结构统一,并且没有在robot.txt中规定相关规则,所以我编写了一个脚本用来获取指定地点的实时天气,主要用于学习编程技巧,请不要恶意爬取数据

    import requests  
    from bs4 import BeautifulSoup
    #获取www.tianqi.com的天气,参数:地名拼音
    def data_of_tianqi(addr):
        response = requests.get("https://www.tianqi.com/"+addr+"/")
        soup = BeautifulSoup(response.text, 'html.parser')
        tag_dd = soup.find_all(name='dd')
        tag_span = soup.find_all(name='span')[0]
        temp = str(soup.find_all(name='b')[0])[3:-4]#温度
        city_html = BeautifulSoup(str(tag_dd[0]), 'html.parser')
        city = str(city_html.find_all(name='h2'))[5:-6]#城市
        week = str(tag_dd[1])[17:-5]
    
        weather_and_temp = str(tag_span)[9:-7].split('</b>')
        weather = weather_and_temp[0]#天气
        temp = str(soup.find_all(name='b')[0])[3:-4]#实时温度
        temp_from_to = weather_and_temp[1]#温度范围
        shidu = str(tag_dd[3]).replace("</b>","").replace("</dd>","").split("<b>")[1]#湿度
        fengxaing = str(tag_dd[3]).replace("</b>","").replace("</dd>","").split("<b>")[2]#风向
        ziwaixian = str(tag_dd[3]).replace("</b>","").replace("</dd>","").split("<b>")[3]#紫外线
        other_info = str(tag_dd[4])[57:-12].replace('</h5><h6>','<br/>').replace('</h6><span>','<br/>').split('<br/>')#空气质量、PM、日出、日落
        info = []
        info.append(city)
        info.append(week)
        info.append(weather)
        info.append(temp)
        info.append(temp_from_to)
        info.append(shidu)
        info.append(fengxaing)
        info.append(ziwaixian)
        info.append(other_info)
        return info
    data = data_of_tianqi("nanjing")
    print(data)
    
    展开全文
  • 本案例主要是为了获取某城市的历史天气数据,字段包含日期,最低气温,最高气温,风向,风力,天气状况,空气质量指标值,空气质量等级和空气质量说明.#导入第三方包import requestsimport timeimport randomimport pandas ...

    本案例主要是为了获取某城市的历史天气数据,字段包含日期,最低气温,最高气温,风向,风力,天气状况,空气质量指标值,空气质量等级和空气质量说明.

    #导入第三方包

    import requests

    import time

    import random

    import pandas as pd

    import re

    #构造请求头

    headers = {

    "Accept":"*/*",

    "Accept -Enconding":"gzip,deflate",

    "Accept-Language":"zh-CN,zh;q=0.9",

    "conection":"keep-alive",

    "User-Agent":"Mozilla/5.0 (windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/63.0.3236.0 Safari/537.36"

    }

    #生成所有需要抓取的链接

    urls = []

    for year in range(2012,2019):

    for month in range(1,13):

    if year <= 2016:

    urls.append("http://tianqi.2345.com/t/wea_history/js/58362_%s%s.js"

    %(year,month))

    else:

    if month<10:

    urls.append("http://tianqi.2345.com/t/wea_history/js/58362_%s%s.js"

    %(year,month,year,month))

    #循环并通过正则匹配获取相关数据

    info = []

    for url in urls:

    seconds random.randint(3,6)

    response = requests.get(usl,headers = headers).text #发送url链接的请求,并返回响应数据

    ymd =re.findall("ymd:"(.*?)",",response) #正则表达式获取日期数据

    high = re.findall("bWendu:"(.*?)",",response) #正则表达式获取最高气温数据

    low = re.findall("yWendu:"(.*?)",",response) #正则表达式获取最低气温数据

    tianqi = re.findall("tianqi:"(.*?)",",response) #正则表达式获取天气状况数据

    fengxiang = re.findall("fengxiang:"(.*?)",",response) # 正则表达式获取风向数据

    fengli = re.findall("fengli:"(.*?)",",response) #正则表达式获取风力数据

    aqi = re.findall("aqi:"(.*?)",",response) #正则表达式获取空气质量指标数据

    aqiInfo = re.findall("aqiInfo:"(.*?)",",response) #正则表达式获取空气质量说明数据

    aqiLevel = re.findall("aqiLevel:"(.*?)",",response) #正则表达式获取空气质量水平数据

    #犹豫 2012-2015没有空气质量相关的数据,故需要分开处理

    if len(aqi) == 0:

    aqi = None

    aqiInfo = None

    aqiLevel = None

    info.append(pd.DataFrame({"ymd":ymd,"high":high,"low":low,"tianqi":tianqi,

    "fengxiang":fengxiang,"fengli":fengli,"aqi":aqi,

    "aqiInfo":aqiInfo,"aqiLevel":aqiLevel}))

    else:

    info.append(pd.DataFrame({"ymd":ymd,"high":high,"low":low,"tianqi":tianqi,

    "fengxiang":fengxiang,"fengli":fengli,"aqi":aqi,

    "aqiInfo":aqiInfo,"aqiLevel":aqiLevel}))

    time.sleep(seconds) #每循环一次,都随机停顿几秒

    #将存储的所有天气数据进行合并,生成数据表格

    weather = pd.concat(info)

    #数据导出

    weather.to_csv("weather.csv",index = False)

    #本例题中编译后说aqiLevel 说是数据个数不相同,导致DataFrame报错,本人在用的时候先屏蔽了这项参数。先学习大概用法,后面再纠正,或者有调试好的朋友可以指导一下。

    展开全文
  • python 获取天气接口数据

    千次阅读 2018-09-06 10:40:07
    Python获取中国天气天气接口数据 import urllib.request import json code='101160101' url='http://www.weather.com.cn/data/cityinfo/%s.html'% code print('url=',url) obj=urllib.request.urlopen(ur...

    从微信公众号中看到的代码,以此记录

    用Python获取中国天气网天气接口数据

    import urllib.request
    import json
    code='101160101'
    url='http://www.weather.com.cn/data/cityinfo/%s.html'% code
    print('url=',url)
    obj=urllib.request.urlopen(url)
    print('type(obj)=',type(obj))
    data_b=obj.read()
    print('data_b=',data_b)
    data_s=data_b.decode('utf-8')
    print('data_s=',data_s)
    data_dict=json.loads(data_s)
    print('data_dict=',data_dict)
    rt =data_dict['weatherinfo']
    print('rt=',rt)
    my_rt=('%s,%s,%s~%s')% (rt['city'],rt['weather'],rt['temp1'],rt['temp2'])
    print(my_rt)
    展开全文
  • python获取天气api的数据 1.使用免费的天气api网站 https://tianqiapi.com(需注册) 2.学习来源:https://www.imooc.com/learn/738 3.参考文章:https://www.cnblogs.com/super-lebron/p/12826257.html # -*- ...

    python获取天气api的数据

    1.使用免费的天气api网站 https://tianqiapi.com(需注册)

    2.学习来源:https://www.imooc.com/learn/738

    3.参考文章:https://www.cnblogs.com/super-lebron/p/12826257.html

    # -*- coding: UTF-8 -*-
    from urllib.parse import urlencode
    #from urllib.parse import parse_qs
    import requests
    
    def wz(ct):
        # 天气接口
        url="https://tianqiapi.com/api"
        # 参数
        data={}
        data['version']='v6'
        data['appid']= 注册后免费提供给开发者
        data['appsecret']='注册后免费提供给开发者'
        data['city']=ct
    
        # 将参数转换成url可用格式
        data=urlencode(data)
    
        # 将str类型转换成dict类型
        # def test():
        #     print('字符串形式')
        #     dictData = data
        #     print(dictData)
        #     print('转换成字典形式')
        #     strDicts=parse_qs(dictData)
        #     print(strDicts)
        # test()
    
        # 最终的url请求
        request=url+'?'+data
    
        # 读取请求结果
        rep=requests.get(request)
    
        # 请求结果转换成json格式
        repJson = rep.json()
    
        cityid = repJson.get('cityid')
        tdate = repJson.get('date')
        week = repJson.get('week')
        city = repJson.get('city')
        wea = repJson.get('wea')
        tem2 =repJson.get('tem2')
        win =repJson.get('win')
        win_speed = repJson.get('win_speed')
    
        dic={'cityid':cityid,'ddate':tdate,'week':week,'city':city,'wea':wea,'tem2':tem2,'win':win,'win_speed':win_speed}
        print(dic)
    wz('杭州')
    #执行结果
    {'cityid': '101210101', 'ddate': '2020-12-10', 'week': '星期四', 'city': '杭州', 'wea': '阴', 'tem2': '9', 'win': '北风', 'win_speed': '2级'}

    4.总结:实现过程

    ① python,请求方式GET

    ②定义接口地址和请求数据,按照格式拼接起来发送给服务器:

    # 定义接口地址:  
    url="https://tianqiapi.com/api"
    
    # 需要的请求参数 
     data={}
    data['version']='v6'
    data['appid']=天气api网站后免费提供给注册的开发者
    data['appsecret']='天气api网站后免费提供给注册的开发者'
    data['city']=ct
    print(data)
    {'version': 'v6', 'appid': 天气api网站后免费提供给注册的开发者, 'appsecret': '天气api网站后免费提供给注册的开发者', 'city': '杭州'}
    print(type(data))
    <class 'dict'>
    
    # 将参数转换成url可用格式
    data=urlencode(data)
    print(data)
    version=v6&appid=天气api网站后免费提供给注册的开发者&appsecret=天气api网站后免费提供给注册的开发者&city=%E6%9D%AD%E5%B7%9E
    print(type(data))
    <class 'str'>
    
    # 按照格式拼接, 最终的url请求   
    request=url+'?'+data
    print(type(request))
    <class 'str'>
    print(request)
    https://v0.yiketianqi.com/api?version=v61&appid=注册后免费提供给开发者&appsecret=’注册后免费提供给开发者‘

    ③读取请求结果,数据需要进行编码(转码前后对比)

    #读取请求结果
    rep=requests.get(request)
    print(type(rep))
     <class 'requests.models.Response'> 
    print(rep)
    <Response [200]>
    
    #需要对请求结果编码
    repJson = rep.json()
    print(type(repJson))
    <class 'dict'>
    print(repJson)
    {'cityid': '101210101', 'date': '2020-12-10', 'week': '星期四', 'update_time': '2020-12-10 19:56:06', 'city': '杭州', 'cityEn': 'hangzhou', 'country': '中国',     'countryEn': 'China', 'wea': '阴', 'wea_img': 'yin', 'tem': '9', 'tem1': '12', 'tem2': '9', 'win': '北风', 'win_speed': '2级', 'win_meter': '小于12km/h', 'humidity': '80%', 'visibility': '2.7km', 'pressure': '1018', 'air': '93', 'air_pm25': '93', 'air_level': '良', 'air_tips': '空气好,可以外出活动,除极少数对污染物特别敏感的人群以外,对公众没有危害!', 'alarm': {'alarm_type': '', 'alarm_level': '', 'alarm_content': ''}}
    

    ④按需提取结果

    例:cityid = repJson.get('cityid')
    dic={'cityid':cityid,'ddate':tdate,'week':week,'city':city,'wea':wea,'tem2':tem2,'win':win,'win_speed':win_speed}
    print(dic)

     

    展开全文
  • python获取天气预报并微信发送

    千次阅读 2018-07-11 15:03:12
    python获取天气预报 1. 注册阿凡达数据 这个网站上(阿凡达数据)给出了很多数据的接口,这样就省的你自己去爬,在这个网站上申请后,你在申请数据接口你会拿到一个appkey,这个appkey将来可以用来做一个接口...
  • python爬取天气数据

    2020-12-22 11:11:30
    制作UI界面前先获取城市天气数据 一.爬取天气数据(有网) 第一步:找到合适的url链接 第二步:用python的urllib2库爬取对应城市的天气数据。 第三步:打印天气数据 有了思路,开始打代码: import urllib.request ...
  • print('天气:%s'%rep.json()['wea']) print('风向:%s'%rep.json()['win']) print('温度:%s'%rep.json()['tem']+'°C') print('风力:%s'%rep.json()['win_speed']) print('湿度:%s'%rep.json()['humidity']) ...
  • python获取城市天气数据案例

    千次阅读 2014-02-19 10:57:09
    最近对城市的空气质量指数尤为关心,总是想对比一下各个城市的空气质量,单个查太麻烦,于是想到来用python代码来获取 注意:以下代码需要在pyton2中运行 #coding:utf-8 import urllib2 import time citys = ['...
  • python 获取天气信息

    2019-07-26 11:23:00
    【说明】接口为聚合数据接口。API使用说明: 实现代码: import requests,json def main(): #参数 farmat=1 cityname = input("请输入你想查询的城市天气:") key='621043608cb9e7f7f485461ef9e5...
  • Python爬取天气数据及可视化分析

    万次阅读 多人点赞 2020-07-29 10:48:23
    Python爬取天气数据及可视化分析 文章目录Python爬取天气数据及可视化分析说在前面1.数据获取请求网站链接提取有用信息保存csv文件2.可视化分析当天温度变化曲线图当天相对湿度变化曲线图温湿度相关性分析图空气质量...
  • python爬虫根据输出城市获取天气数据并图形化显示 1,根据输出城市获取天气数据 2,输出csv报告,svg视图
  • python读取csv数据Recently, I worked on a machine learning project related to renewable energy, which required historical weather forecast data from multiple cities. 最近,我从事与可再生能源有关的机器...
  • 中国天气网(http://www.weather.com.cn)向用户提供国内各城市天气信息,并提供API供程序获取所需的天气数据,返回数据格式为JSON,API网址类似http://www.weather.com.cn/data/cityinfo/101020100.html,其中,...
  • 在本小节中,我们需要完成的任务是:使用python从FTP服务其上面获取文本文件。 搭建测试FTP服务器 LZ的测试环境是在 Windows2012 (实体机上的操作系统) + Ubuntu 16.04 (虚拟机)。 为了简单起见,我们就将FTP...
  • 那么,我们能不能用python中的方法做一个天气数据分析的图形,帮助我们更直接的看出天气变化呢? 使用pygal绘图,使用该模块前需先安装pip install pygal,然后导入import pygal bar = pygal.Line() # 创建折线图 ...
  • 以前用Python写的一个定时获取天气情况,并用邮件发送的小功能,需要使用到一点网页数据解析. 获取天气,发送邮件的函数: 刚刚测试了下,这个网站可能已经停更了.最新更新还是五月二十八,但是思路是这样,没问题. # ...
  • Python3获取历史天气数据

    千次阅读 2018-09-15 18:53:02
    数据来源是历史天气网 网址:http://lishi.tianqi.com/ 函数输入的是城市拼音,年份(可设置起始年份),输出的是Pandas里的dataframe数据类型,便于保存成excel或其他本地数据存储形式。   # -*- coding: utf...
  • 9.3 Python爬取天气数据并用Pygal绘图

    千次阅读 2019-07-13 16:31:14
    3、爬取天气数据并用Pygal绘图 需求: 使用 Python 获取 2018 年太原的天气的最高气温和最低气温信息 使用 Pygal 展示天气数据 步骤: 下载、提取数据 使用 urllib.request 向 ...
  • 近来公司大屏幕的天气接口老是出问题,之前用的是webservice的http://www.webxml.com.cn/WebServices/WeatherWebService.asmx这个接口,坑的是每个月的25号该服务暂停维护,因此不得不寻找新的接口替换。。。然后我...
  • weatherData_python 使用python和api键获取当前天气数据获取api密钥
  • 新版中国天气爬虫 获取最新天气 以及天气日历数据 Conky Linux
  • 前言 本文的文字及图片来源于网络,仅供学习、交流...那么,我们能不能用python中的方法做一个天气数据分析的图形,帮助我们更直接的看出天气变化呢? 使用pygal绘图,使用该模块前需先安装pip install pygal,然后导.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 389
精华内容 155
关键字:

python获取天气数据

python 订阅