Advertisement

使用 Python 爬取天气数据并保存至 CSV

阅读量:

本文介绍了如何使用Python编程语言和requests、parsel、csv等库来爬取天气数据并保存至CSV文件中。背景部分强调了天气数据的重要性及其在多个领域中的应用。工具和技术部分详细说明了所使用的库及其功能。代码实现部分展示了如何构造请求URL、发送HTTP请求、解析HTML数据并写入CSV文件。分析与讨论部分指出了代码的优点和改进空间,包括错误处理、性能优化和数据清洗。总结部分回顾了整个流程,并强调了该方法对数据分析师和研究人员的价值。

文章目录

    • 通过 Python 实现天气数据的获取与存储功能
    • 背景分析
    • 所采用的工具和技术
    • 代码实现部分
    • 分析结果与讨论
    • 总结与展望

使用 Python 爬取天气数据并保存至 CSV

在数字时代,数据已成为推动各行各业发展的关键资源之一。对于许多数据分析专家、科研人员和开发者而言,天气数据是其日常工作中不可忽视的重要组成部分。本文旨在介绍如何利用Python编程语言及其常用库来获取天气数据,并便于将其保存至CSV文件中,以便后续分析和应用。

背景介绍

在现代生活中,天气数据扮演着不可或缺的角色。它不仅影响着我们的日常出行安排,还对农业、交通运输以及航空航天等多个领域的发展产生了直接影响。准确且及时的天气数据对于每个人来说都是至关重要的情报资源。

然而,获取天气数据并非易事。尽管存在多个提供实时天气数据的网站与应用程序,但获取历史天气数据却并非总是轻易可得。因此,我们可以采用网络爬虫技术,通过编写相应的程序,从天气网站上获取所需的历史天气数据,并将其保存至本地文件,以便后续分析与应用。

使用的工具和技术

在本文中,我们采用Python编程语言及以下列出的几个库来结合这些工具以实现我们的目标。

  • requests : 发送HTTP请求数量,用于接收网页内容信息。
  • parsel : 使用解析工具,从HTML或XML文档中提取所需数据信息。
  • csv : 将数据存储到特定格式的CSV文件中,便于后续处理和分析。

代码实现

数据来源:https://tianqi.2345.com/

数据说明:
作者欲获取的数据涵盖自2013年到2022年间,秦皇岛、北京、济南及深圳四个城市的天气信息,涵盖日期、最高温度、最低温度、天气状况以及风向。

然后我们先来看一下具体的代码实现:

复制代码
    import requests
    import parsel
    import csv
    
    # 打开 CSV 文件并创建 CSV writer 对象
    f = open('weather_data.csv', mode='a', encoding='utf-8', newline='')
    csv_writer = csv.writer(f)
    csv_writer.writerow(['日期', '最高温度', '最低温度', '天气', '风向', '城市'])
    
    # 要爬取天气数据的城市列表及其对应的城市代码
    city_list = [54449, 54511, 54823, 59493]
    
    # 遍历城市列表
    for city in city_list:
    city_name = ''
    # 根据城市代码确定城市名称
    if city == 54449:
        city_name = '秦皇岛'
    elif city == 54511:
        city_name = '北京'
    elif city == 54823:
        city_name = '济南'
    elif city == 59493:
        city_name = '深圳'
    
    # 遍历年份和月份
    for year in range(2013, 2023):
        for month in range(1, 13):
            # 构造请求 URL
            url = f'https://tianqi.2345.com/Pc/GetHistory?areaInfo%5BareaId%5D={city}&areaInfo%5BareaType%5D=2&date%5Byear%5D={year}&date%5Bmonth%5D={month}'
            
            # 发送 HTTP 请求并获取页面内容
            response = requests.get(url=url)
            html_data = response.json()['data']
            
            # 解析页面内容
            select = parsel.Selector(html_data)
            trs = select.css('.history-table tr')[1:]  # 排除表头行
            for tr in trs:
                tds = tr.css('td::text').getall()
                tds.append(city_name)
                
                # 将数据写入 CSV 文件
                csv_writer.writerow(tds)

分析与讨论

该系统开发了一个基础的天气数据获取系统。该系统首先创建了一个城市列表,并通过循环遍历每个城市的所有年份和月份,生成相应的请求 URL 参数。随后,系统会对每个生成的 URL 进行 HTTP 请求,并解析返回的网页内容,提取所需数据。最后,系统会将解析出的数据以 CSV 格式保存到指定文件路径中。

这段代码的实现涉及到了多个关键技术点:

  1. HTTP 请求发送和响应处理 :通过 requests 库发起 HTTP 请求,并解析返回的响应数据。
  2. HTML 页面解析 :通过 parsel 库分析 HTML 页面结构,获取所需信息。
  3. CSV 文件操作 :通过 csv 库将数据存储为 CSV 文件,用于后续处理和分析。

同时,这段代码还存在一些改进空间:

  • 错误处理:现有代码中未对网络请求可能出现的异常进行处理,如连接超时、页面不存在等情况,建议采取相应的错误处理机制。
  • 性能优化:代码中存在大量嵌套循环结构,可能导致运行效率低下,建议优化算法结构,减少循环次数,提升程序执行效率。
  • 数据清洗:爬取的数据可能存在错误或缺失,建议进行数据清洗和验证,以确保数据的准确性和完整性。

总结

通过本文的介绍,我们深入探讨了如何利用Python编程语言及其常用库来获取天气数据,并将其存储于电子表格文件中。我们对实现细节进行了深入分析,并揭示了其中的关键核心技术。此外,我们还指出了现有代码在性能优化方面的改进方向。本文旨在帮助你掌握网络爬虫技术的基本应用方法,同时通过实践机会,希望你能进一步提升能力,将这些技术应用到实际工作和研究中,从而取得更显著的效果。

全部评论 (0)

还没有任何评论哟~