爬取北京2020到2022各月天气数据

import requests
import parsel
import csv



f = open('北京历史天气.csv',mode='w',encoding='utf-8',newline='')
csv_writer = csv.DictWriter(f,fieldnames=[
        '日期',
        '最高温',
        '最低温',
        '天气',
        '风力风向',
        '空气质量指数',

])
csv_writer.writeheader()
for year in range(2020,2023):
    for month in range(1,13):
        url = f'https://tianqi.2345.com/Pc/GetHistory?areaInfo%5BareaId%5D=54511&areaInfo%5BareaType%5D=2&date%5Byear%5D={year}&date%5Bmonth%5D={month}'

        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
            "Referer": "https://tianqi.2345.com/wea_history/54511.htm",

        }
        response = requests.get(url=url,headers=headers)
        json_data = response.json()  # .json()可以将拿到的text内容转为字典格式
        html_data = json_data['data']

        selector = parsel.Selector(html_data)
        trs = selector.css('tr')
        for tr in trs:
            date = tr.css('td:nth-child(1)::text').get()
            Max_temp = tr.css('td:nth-child(2)::text').get()
            Lowest_temp = tr.css('td:nth-child(3)::text').get()
            weather = tr.css('td:nth-child(4)::text').get()
            wind = tr.css('td:nth-child(5)::text').get()
            air_quality = tr.css('td:nth-child(6) span::text').get()
            dit = {
                '日期':date,
                '最高温':Max_temp,
                '最低温':Lowest_temp,
                '天气':weather,
                '风力风向':wind,
                '空气质量指数':air_quality,
            }
            print(date,Max_temp,Lowest_temp,weather,wind,air_quality)
            csv_writer.writerow(dit)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学习各种软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值