欢迎光临散文网 会员登陆 & 注册

【数据】用python爬取台湾气象网站气象日报表

2023-07-25 22:59 作者:肢体不协调人士  | 我要投稿

为了获取中国台湾地区的气象站点的平均风速数据(每个整点前10min平均风速)

这个10分钟平均风速应该和大陆地区的10min平均风速是一样的(不知道大陆地区是否是10min滑动平均得到,需要再确认)

网站提供逐站日报表、月报表、年报表,可下载表格存储为csv文件。年最大平均10min风速,只能通过下载所有日报表,统计逐时数据才能得到。

但一页一页点击下载太慢了,就想通过python爬一下。同个站点不同日期日报表的url都是按时间排列的,所以只需要用个循环,批量打开这些网页并逐行每张表格的数据,并存储,便可获得所需数据。

因为没有爬虫经验,python用得也一般,在网上摘摘抄抄一些代码缝缝补补弄了个简易版程序,爬到的数据因为不能识别繁体中文,繁体中文部分是乱码,也请高手有缘看见,能指教一番。

# 导入库

import pandas as pd

import datetime

import random

import time


def get_date_range(begin_date, end_date):

    # 定义日期函数

    date_list = []

    while begin_date <= end_date:

        date_list.append(begin_date)

        begin_date_object = datetime.datetime.strptime(begin_date, "%Y-%m-%d")

        days1_timedelta = datetime.timedelta(days=1)

        begin_date = (begin_date_object + days1_timedelta).strftime("%Y-%m-%d")

    return date_list

# 确定需要的数据时段

begin_date = "2011-01-01"

end_date = "2013-12-31"

date_list = get_date_range(begin_date, end_date)

print(date_list)

# 建立空白DataFrame

df1 = pd.DataFrame()

df2 = pd.DataFrame()

# 建立爬取网址合集urls

url_ori = 'https://e-service.cwb.gov.tw/HistoryDataQuery/DayDataController.do?command=viewMain&station=467300&stname=%25E6%259D%25B1%25E5%2590%2589%25E5%25B3%25B6&datepicker='

url_end = '&altitude=43.0m#'

for i in range(0,len(date_list)):

    urls = [url_ori + date_list[i] + url_end]

    print(urls)

# 依次爬取每一页的表格数据并append

    for j, url in enumerate(urls):

        df1 = pd.concat(pd.read_html(url),axis=0)#纵向拼接(concat(axis=0)或append()

        df2 = pd.concat([df2,df1],axis=0)

# 数据导出到CSV

df2.to_csv('d:/dongjidao_'+end_date+'.csv',  index=False)


【数据】用python爬取台湾气象网站气象日报表的评论 (共 条)

分享到微博请遵守国家法律