Pythonの気象分析とどこ中秋節に行くことを教えてくれ

中秋節、あなたは相手がどこで良いプレー行きたくなかった小さな子供を持って知りません。しかし、確かに、すべての休日や人々の巨大な群衆があったが、フレーズは、それを随時私の耳には「私は、移動できませんでした」。

しかし、人的要因に加えて、休日の旅行、バック追加、天候要因がまだ今日それについて考えていない、我々は旅行に適した場所、中秋節の休日を、見るためにあなたを取りますよ。

データを取得します

データの取得は、データのみの最後の3日間を取得することができ、ネットワーク上のAPIのいくつかの、いくつかの情報は非常に広いではない、中国の気象のウェブサイトから直接それをつかむが、また、同様に自分で良い時間をつかむかもしれない、いくつかを支払う必要があります。

http://www.weather.com.cn/weather15d/10124020102A.shtml

ウェブサイトは、私たちがデータをキャッチしたときに、唯一のあなたはそれの人々の通常の動作に影響を与えていない、アクセス頻度を制御するために必要な、任意の制限をしませんでした。

また、あなたは、4つのデータファイルを準備する必要があります

  • リストの首都、provincial_capital
  • ナショナルシティid情報テーブル、中国都市list.csv
  • 有名な観光スポット、アトラクションの名前一覧
  • 国立観光名所ID情報テーブル、中国風光明媚な-list.txtに

クロールプロセスがもはや詳細に記載されている、完全なコードを直接与えられていません

# coding = utf-8
"""
@author: zhou
@time:2019/9/5 14:36
@File: main.py
"""

import requests
from bs4 import BeautifulSoup
import time
import os

def get_data(name, city, code):
    print("正在下载城市%s的数据" % city)
    url = 'http://www.weather.com.cn/weather15d/%s.shtml' % code[2:]
    res = requests.get(url).content.decode()
    content = BeautifulSoup(res, "html.parser")
    weather_list = content.find('ul', attrs={'class': 't clearfix'}).find_all('li')
    items = map(parse_item, weather_list)
    save_to_csv(name, city, items)
    time.sleep(1)

def parse_item(item):
    time = item.find('span', attrs={'class': 'time'}).text
    wea = item.find('span', attrs={'class': 'wea'}).text
    tem = item.find('span', attrs={'class': 'tem'}).text
    wind = item.find('span', attrs={'class': 'wind'}).text
    wind_level = item.find('span', attrs={'class': 'wind1'}).text
    result = {
        "time": time,
        "wea": wea,
        "tem": tem,
        "wind": wind,
        "wind_level": wind_level
    }
    return result

def save_to_csv(name, city, data):
    if not os.path.exists('%s_data.csv' % name):
        with open('%s_data.csv' % name, 'a+', encoding='utf-8') as f:
            f.write('city,time,wea,tem,wind,wind_level\n')
            for d in data:
                try:
                    row = '{},{},{},{},{},{}'.format(city,
                                                     d['time'],
                                                     d['wea'],
                                                     d['tem'],
                                                     d['wind'],
                                                     d['wind_level'])
                    f.write(row)
                    f.write('\n')
                except:
                    continue
    else:
        with open('%s_data.csv' % name, 'a+', encoding='utf-8') as f:
            for d in data:
                try:
                    row = '{},{},{},{},{},{}'.format(city,
                                                     d['time'],
                                                     d['wea'],
                                                     d['tem'],
                                                     d['wind'],
                                                     d['wind_level'])
                    f.write(row)
                    f.write('\n')
                except:
                    continue

if __name__ == '__main__':
    import pandas as pd
    provincial = pd.read_csv('provincial_capital')
    china_city_code = pd.read_csv('china-city-list.csv')
    china_scenic_code = pd.read_csv('china-scenic-list.txt', sep='\t')
    china_scenic_code.columns = ['ID', 'name', 'area', 'provincial']
    attraction = pd.read_csv('attractions')
    provincial_data = pd.DataFrame()
    attraction_data = pd.DataFrame()

    # 省会抓取
    for i in provincial['city'].values.tolist():
        for j in china_city_code['City_CN'].values.tolist():
            if j == i:
                provincial_data = pd.concat([china_city_code[china_city_code['City_CN'] == j], provincial_data])

    for city in provincial_data['City_CN'].values.tolist():
        city_id = provincial_data[provincial_data['City_CN'] == city]['City_ID'].values.tolist()[0]
        get_data('weather', city, city_id)

    # 景点抓取
    for a in attraction['attractions'].values.tolist():
        for c in china_scenic_code['name'].values.tolist():
            if c == a:
                attraction_data = pd.concat([china_scenic_code[china_scenic_code['name'] == c], attraction_data])

    for attrac in attraction_data['name'].values.tolist():
        city_id = attraction_data[attraction_data['name'] == attrac]['ID'].values.tolist()[0]
        get_data('attraction', attrac, city_id)

資本気象分析

、各県の首都の中心部である、すべての後、我々は最初、天候の首都を見て、市の焦点は、観光です。

降水量と気温

降水確率のために、私のテイクが、それは予測が晴れであれば、降水確率が20で、雨の予報がある場合は、降水確率が80セットです。

weather_dict = {
    "snow": 100,
    "rain": 80,
    "cloud": 50,
    "overcast": 60,
    "sun": 20
}

降水量と温度で、この日の中秋節には、すべての主要都市

Pythonの気象分析とどこ中秋節に行くことを教えてくれ

図から分かるように、この日の都市のほとんどは悪天候で、降水確率は非常に大きいです。次いで、温度を降水の都市高い確率、温度が遅かれ早かれ旅行、それもああ冷却することができる、非常に高いではありません。南昌は、最高温度があるべきであり、30°C、明るい晴れた日に到達することができ、革命の聖地を見ていないですか?

次は水温の低下二軸延伸より直感的なビューにケースを渡し、

Pythonの気象分析とどこ中秋節に行くことを教えてくれ

これは、9月に入った後に思える国の一般的な温度は徐々に低下している、旅行に適した温度が、それは霧雨、それを伴っています。

いくつかの主要都市で、来週の天気の前でと中秋節の後に見てみましょう

北京

Pythonの気象分析とどこ中秋節に行くことを教えてくれ

北京の温度は比較的安定している、多くの変動性がない、軽いジャケットが遅かれ早かれ、ライブ保持することができるかもしれないが、これらの日、それは非常に良い太陽の光を持っていない、曇り霧になるべきです。

上海

Pythonの気象分析とどこ中秋節に行くことを教えてくれ

上海、北京よりも降水確率、実際にはほぼ同じ温度。

杭州

Pythonの気象分析とどこ中秋節に行くことを教えてくれ

杭州以上の平均気温、高い降水確率、結局、南東まあにおける典型的な沿岸都市、雨西湖、あなたが期待していませんか?

成都

Pythonの気象分析とどこ中秋節に行くことを教えてくれ

それが問題ああ、成都基本的には毎日雨が降った、そしてそれはまた、よくパンダを見に行ってきました!

有名リゾートの天気

ここでは、いくつかの有名な風光明媚な気象条件を見て、私は、美しい山や川、風光明媚なあまり、最も有名な場所のいくつかの単純なリストだと、それを見てください。

脱水

Pythonの気象分析とどこ中秋節に行くことを教えてくれ

私はそれらを選択するこれらの風光明媚では、降水量のほとんどはなりますが、日当たりの良い場所があるでしょう。

例えば、黄山と八達嶺長城は万里の長城、晴れ登ると登ることが予想され、黄山は、良い選択です。
そして、美しい西湖九寨溝でというように、雨が降りますが、雨の中を散歩しますが、それはうまくそれの味かもしれません。

降水量と気温

私たちは、温度の周りの状況を見てみましょう

Pythonの気象分析とどこ中秋節に行くことを教えてくれ

温度が承徳でとても低くなりますなぜ私にはわからない、夏はあまり適切であったと感じ、長白山はわずか7°Cを持っており、パニックはパニックにならないのですか?

降水量と温度分布

降水量

Pythonの気象分析とどこ中秋節に行くことを教えてくれ

9月に、降水量の南東海岸には、大幅に増加し、北京と天津は雨が降っている、それはそれの冷たい秋の雨のリズムでした!

温度

Pythonの気象分析とどこ中秋節に行くことを教えてくれ

南東半分壁の下では、温度が非常に適切であり、そして今天気は、暑くも風邪でもない、温度を旅行するのが良いです。

ここでさて、今日の分析、そしてあなたはそれがどこにある中秋節を選択し終わりますか?

送信元アドレス

https://github.com/zhouwei713/data_analysis/tree/master/weather

おすすめ

転載: blog.51cto.com/10487107/2437849