【python爬虫】——历史天气信息爬取

文章目录

1、任务描述

1.1、需求分析

  • 在2345天气信息网2345天气网依据地点时间 对相关城市的历史天气信息进行爬取。

1.2 页面分析

  • 网页使用get方式发送请求,所需参数包括areaInfo[areaId]、areaInfo[areaType]、date[year]、date[month],分别为城市id、城市类型,年、月。

2、获取网页源码、解析、保存数据

python 复制代码
import pandas as pd
import requests
from bs4 import BeautifulSoup

url = "https://tianqi.2345.com/Pc/GetHistory"
def crawl_html(year, month):
    """依据年月爬取对应的数据"""
    params = {'areaInfo[areaId]': 54511,
            'areaInfo[areaType]': 2,
            'date[year]': year,
            'date[month]': month}

    headers = {'User-Agent':'''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'''}

    response = requests.get(url, headers=headers, params=params)
    data = response.json()["data"]
    
    df = pd.read_html(data)[0]
    return df

# 下载2015-2023年北京历史天气数据
df_list = []
for year in range(2015, 2023):
    for month in range(1, 13):
        print("爬取:%d年 %d月"%(year, month))
        df = crawl_html(year, month)
        df_list.append(df)

pd.concat(df_list).to_excel("practice04_BeijingWeather.xlsx", index=False)

3、结果展示

相关推荐
小罗和阿泽4 分钟前
GUI 自动化测试 pywinauto测试框架
开发语言·python·功能测试·测试工具·pytest
小杍随笔6 分钟前
【Rust 语言编程知识与应用:元编程详解】
开发语言·后端·rust
gCode Teacher 格码致知6 分钟前
Javascript提高:JavaScript Promise 超通俗解释-由Deepseek产生
开发语言·javascript
小江的记录本7 分钟前
【Java】Java核心关键字:final、static、volatile、synchronized、transient(附《面试高频考点》)
java·开发语言·spring boot·后端·sql·spring·面试
齐鲁大虾9 分钟前
VC++ 如何获取打印机的脱机/连接状态
开发语言·c++·获取打印机状态
2301_8073671912 分钟前
Win10开机自启动怎么设置?关闭开机启动6大方法
开发语言·python·pygame
羊小猪~~16 分钟前
【QT】--QWIdget与QDialog
开发语言·数据库·c++·后端·qt·求职招聘
Zarek枫煜16 分钟前
zig与c3的算法 -- 静态队列
开发语言·stm32·单片机·嵌入式硬件·算法·51单片机
fff98111817 分钟前
基于C++的爬虫框架
开发语言·c++·算法
yang_B62118 分钟前
C# ISerializable 允许对象控制自己的序列化/反序列化过程
java·开发语言·c#