2021年4月历史天气数据爬取获得的csv文件
2021年4月历史天气数据爬取获得的csv文件
历史天气查询推荐 这个网站。以深圳为例,对 2021 年 4 月的历史天气数据进行查询沈阳历史天气,可访问 深圳 2021-4 该链接2021年4月历史天气数据爬取获得的csv文件,天气数据显示如下图所示。气温、天气的文字描述、风速及风向、湿度、气压数据比较完备,能见度仅部分时间段给出。
想要大规模爬取的话,需要自己写爬虫,我之前写过一个爬取深圳市数据的爬虫。对深圳市的天气数据爬取基本没有问题。
import requests
import demjson
import re
import calendar
import csv
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36\
(KHML, like Gecko) Chrome/52.0.2743.116 Safari/537.36',
}
def get_url(date):
url = 'https://www.timeanddate.com/scripts/cityajax.php?n=china/shenzhen&mode=historic'
url += '&hd=' + date
url += '&month=' + str(int(date[4:6]))
url += '&year=' + date[:4] + '&json=1'
return url
# input: type(str) eg:'20170601'
def crawl_single_day(date):
response = requests.get(get_url(date), headers=headers)
response_list = demjson.decode(response.text)
for weather in response_list:
w_time = re.compile(r'^\d+:\d+').search(weather['c'][0]['h']).group(0)
w_temperature = re.compile(
r'^-?\d+').search(weather['c'][2]['h']).group(0)
w_weather = re.compile(
r'^(.*?)\.').search(weather['c'][3]['h']).group(1)
if weather['c'][4]['h'] == 'No wind':
w_wind_speed = '0'
else:
w_wind_speed = re.compile(
r'^\d+').search(weather['c'][4]['h']).group(0)
w_wind_direction = re.compile(
r'title=\"(.*?)\"').search(weather['c'][5]['h']).group(1)
w_humidity = weather['c'][6]['h']
w_barometer = re.compile(r'^\d+').search(weather['c'][7]['h']).group(0)
w_visibility = weather['c'][8]['h']
if w_visibility != 'N/A':
w_visibility=re.compile(r'^\d+').search(w_visibility).group(0)
yield [date, w_time, w_temperature, w_weather, w_wind_speed, w_wind_direction,
w_humidity, w_barometer, w_visibility]
# input: type(int) eg: year=2017, month=6
def crawl_single_month(year, month):
_, num_day = calendar.monthrange(year, month)
month_str = str(year)
if month < 10:
month_str += '0' + str(month)
else:
month_str += str(month)
day_list = list(range(1, num_day + 1))
for day in day_list:
if day < 10:
for weather in crawl_single_day(month_str + '0' + str(day)):
yield weather
else:
for weather in crawl_single_day(month_str + str(day)):
yield weather
if __name__ == "__main__":
with open('weather0.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerow('date time temperature weather wind_speed wind_direction humidity barometer visibility'.split())
for month in range(7, 13):
writer.writerows(crawl_single_month(2017, month))
with open('weather1.csv', 'w', encoding='utf-8', newline='') as file:
writer = csv.writer(file)
writer.writerow('date time temperature weather wind_speed wind_direction humidity barometer visibility'.split())
writer.writerows(crawl_single_day('20210401'))
对 的深圳天气数据爬取获得的 csv 文件如下图所示
该 程序仅实现了爬取深圳市指定一天或者一个月的函数沈阳历史天气,有需求的话可以自己扩充。
如要爬取其他城市,可以尝试将 () 函数中 url 的初始值中城市名称进行修改,譬如爬取沈阳市修改为
url = 'https://www.timeanddate.com/scripts/cityajax.php?n=china/shenyang&mode=historic'
这个修改因为访问相应 url 返回数据可能存在格式上的差异导致不成功(主要是答主目前没兴趣修改去保证兼容,熟悉爬虫的同学可以自己修改)沈阳历史天气,北京市的部分天气数据该程序修改后爬取就没有成功。
另外2021年4月历史天气数据爬取获得的csv文件,该网站上不同城市天气数据的时间间隔存在差异,深圳市我看到的数据基本上是以一小时作为时间间隔,而沈阳市是半小时作为间隔。
标签ad报错:该广告ID(4)不存在。
随便看看
- 2024-06-13进贤县黄河阵:上古习俗与南昌采茶戏的奇妙交融
- 2024-04-13寻麟文化 红星资本局盲盒限量发售成常规操作购买需入场资格
- 2024-04-11广东展馆亮相版博会,主打特色创新体验感
- 2024-04-03持续一整天的降雨确是入汛以来最强降雨
- 2024-02-17“新一代汇企行”走进创维——数字化赋能传统产业生态建设企业交流会
- 2024-02-17创维集团深圳总部根植改革创新土壤敢拼品牌辉煌
- 2024-02-15风水堂:如何预测蓝球中奖号码?
- 2024-02-15风水堂:天气预报的手段及预测
- 2024-02-15南怀瑾老师:易经到底有多厉害,到底能不能呼风唤雨
- 2024-02-11威海:2023年以来气候概况和气象高质量发展情况
- 2024-02-082023深圳仙湖植物园停车场中秋国庆怎么预约(附预约入口)
- 2024-02-08深圳十大景点,你去过几个?
- 2024-02-08锦绣中华、中国民俗文化村两大主题公园
- 2024-01-02带卫生间的卧室有什么风水讲究呢?殿看看
- 2024-01-01慈世堂:卫生间改卧室风水是怎样的?
- 2024-01-01卧室陪卫生间的风水有着怎样的讲究呢?
- 2024-01-01慈世堂:卫生间改成卧室风水好吗?
- 2024-01-01卫生间改成卧室有什么需要注意的呢?
- 2023-11-25高密红高粱抗战馆集群新打造的非遗民俗馆开馆
- 2023-11-247月21日~26日,跟着世遗名录游泉州