【Python爬虫+数据分析教学案例】爬取天气数据,做可视化分析,毕设必备项目

前言

(。・∀・)ノ゙嗨 大家好,这里是池鱼

又来跟你们唠叨唠叨两句~

最近这几天长沙的天气,晴两天雨一天,弟弟他们老师叫他们爬爬天气数据,还要顺便做个可视化分析

他倒好,上课不听,现在跑过来要我帮帮忙,还能怎么呢,那就帮帮他吧

在这里插入图片描述

顺便来给你们分享分享,Python如何爬取天气数据,并做可视化(这个也可以做毕设或者课堂作业哦)

那今天咱们就来扒拉扒拉这个网站吧

在这里插入图片描述

知识点

  • 动态数据抓包
  • requests发送请求
  • 结构化+非结构化数据解析

开发环境

  • python 3.8 运行代码
  • pycharm 2022.3.2 辅助敲代码 专业版
  • requests 发送请求 pip install requests
  • parsel 解析数据 pip install parsel

爬虫案例实现:

一. 思路分析

找到数据来源 静态的数据? 动态的数据?

network 抓包分析

https://tianqi.2345.com

二. 代码实现

  1. 发送请求
  2. 获取数据
  3. 解析数据
  4. 保存数据

完整代码【看代码中数字领取】

import requests
import parsel
import csv

除了代码,还需要其他资料的 可以点私信哦

在这里插入图片描述

在这里插入图片描述

f = open('天气数据.csv', mode='a', newline='', encoding='utf-8')
csv_writer = csv.writer(f)
csv_writer.writerow(['日期','最高温度','最低温度','天气', '风向','城市'])
areaList = [54511, 58362, 59287, 59493]
for areaId in areaList:
    if areaId == 54511:
        area = "北京"
    elif areaId == 58362:
        area = "上海"
    elif areaId == 59287:
        area = "广州"
    else:
        area = "深圳"
        690643772 ### 源码领取
    for year in range(2011, 2023):
        for month in range(1, 13):
            url = f'https://tianqi.2345.com/Pc/GetHistory?areaInfo%5BareaId%5D={areaId}&areaInfo%5BareaType%5D=2&date%5Byear%5D={year}&date%5Bmonth%5D={month}'
  1. 发送请求
response = requests.get(url)
  1. 获取数据

.text: 获取文本内容
.content: 二进制数据 图片/音频/视频
.json(): 获取json数据 字符串 {“”:“”,“”:“”, “”:“”}

 json_data = response.json()
  1. 解析数据

解析的是什么数据?
结构化数据: json数据 字典取值提取内容
非结构化数据: 网页源代码 css/xpath/re bs4/lxml/parsel/re…

html_data = json_data['data']
# tr
select = parsel.Selector(html_data)
trs = select.css('tr')[1:]
for tr in trs:690643772 ### 源码领取
   # .get(): 获取单个标签
   # .getall(): 获取所有标签
   td = tr.css('td::text').getall()
   td.append(area)
   csv_writer.writerow(td)
   print(td)

最后

今天的案例分享到这里就结束啦

对文章有问题的铁汁评论区留言,或者可以私信我哦

在这里插入图片描述

你可能感兴趣的:(Python案例,python,爬虫,数据分析)