Python期末大作业——获取北上广深历史天气并做数据可视化

前言

嗨喽,大家好呀~这里是爱看美女的茜茜呐

知识点:

  • 动态数据抓包

  • requests发送请求

  • 结构化+非结构化数据解析

一、开发环境:

所使用软件工具:

  • python 3.8 运行代码

  • pycharm 2022.3.2 辅助敲代码 专业版

需安装第三方模块:

  • requests 发送请求 pip install requests

  • parsel 解析数据 pip install parsel

第三方模块安装:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

  2. 在pycharm中点击Terminal(终端) 输入安装命令

如果出现爆红, 可能是因为 网络连接超时, 可切换国内镜像源,命令如下:

pip install -i https://pypi.doubanio.com/simple/ requests

python资料、源码、教程\福利皆: 点击此处跳转文末名片获取

二、获取数据

导入模块

import requests     # 发送请求要用的模块 需要额外安装的
import parsel
import csv
f = open('天气.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.writer(f)
csv_writer.writerow(['日期', '最高温度', '最低温度', '天气', '风向', '城市'])
city_list = [54511, 58362, 59287, 59493]
for city in city_list:
    city_name = ''
    if city == 54511:
        city_name = '北京'
    elif city == 58362:
        city_name = '上海'
    elif city == 59287:
        city_name = '广州'
    elif city == 59493:
        city_name = '深圳'
    for year in range(2013, 2023):
        for month in range(1, 13):
        完整源码、解答、教程皆+VX:pytho8987获取,验证备注“777”
            url = f'https://tianqi.2345.com/Pc/GetHistory?areaInfo%5BareaId%5D={
     city}&areaInfo%5BareaType%5D=2&date%5Byear%5D={
     year}&date%5Bmonth%5D={
     month}'
  1. 发送请求
            response = requests.get(url=url)
  1. 获取数据
            html_data = response.json()['data']
  1. 解析数据
            select = parsel.Selector(html_data)
            trs = select.css('.history-table tr')   # 拿到31个tr
            for tr in trs[1:]:                      # 第一个表头不要
                tds = tr.css('td::text').getall()   # 针对每个tr进行提取 取出所有的td里面的内容
                tds.append(city_name)               # 把城市追加到列表里面
                print(tds)
  • 5
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值