爬取天气数据,利用Pyecharts作轮播图

news2024/9/23 19:14:43

 

爬取网站链接:https://lishi.tianqi.com/xiamen/202312.html

爬取了厦门市2023年一整年的天气数据,包括最高温,最低温,天气,风力风向等 

爬虫代码:

import requests
import pandas as pd
import csv
from pyecharts.charts import Bar,Timeline
import pyecharts.options as opts
import parsel

f = open('天气数据.csv',mode='w',encoding='utf-8',newline='')
csv_writer = csv.DictWriter(f,fieldnames=['日期','星期','最高温','最低温','天气','风向','风力'])
csv_writer.writeheader()
cookies = {
    'cityPy': 'xiamen',
    'cityPy_expire': '1721098187',
    'UserId': '17204933865319972',
    'Hm_lvt_ab6a683aa97a52202eab5b3a9042a8d2': '1720493387',
    'HMACCOUNT': '4A9167DA75AB7059',
    'Hm_lpvt_ab6a683aa97a52202eab5b3a9042a8d2': '1720493402',
    'Hm_lvt_7c50c7060f1f743bccf8c150a646e90a': '1720493523',
    'Hm_lvt_30606b57e40fddacb2c26d2b789efbcb': '1720493529',
    'Hm_lpvt_30606b57e40fddacb2c26d2b789efbcb': '1720493529',
    'Hm_lpvt_7c50c7060f1f743bccf8c150a646e90a': '1720493646',
}

headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'zh-CN,zh;q=0.9',
    'cache-control': 'no-cache',
    # 'cookie': 'cityPy=xiamen; cityPy_expire=1721098187; UserId=17204933865319972; Hm_lvt_ab6a683aa97a52202eab5b3a9042a8d2=1720493387; HMACCOUNT=4A9167DA75AB7059; Hm_lpvt_ab6a683aa97a52202eab5b3a9042a8d2=1720493402; Hm_lvt_7c50c7060f1f743bccf8c150a646e90a=1720493523; Hm_lvt_30606b57e40fddacb2c26d2b789efbcb=1720493529; Hm_lpvt_30606b57e40fddacb2c26d2b789efbcb=1720493529; Hm_lpvt_7c50c7060f1f743bccf8c150a646e90a=1720493646',
    'pragma': 'no-cache',
    'priority': 'u=0, i',
    'referer': 'https://lishi.tianqi.com/xiamen/202302.html',
    'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
}
for i in range(1,13):
    if i < 10:
        i = '0'+str(i)
    url = f'https://lishi.tianqi.com/xiamen/2023{i}.html'
    response = requests.get(url=url, cookies=cookies, headers=headers)
    response.encoding=response.apparent_encoding
    html = response.text
    selector = parsel.Selector(html)
    li_list = selector.css('div.tian_three ul.thrui li')
    for li in li_list:
        date_time = li.css('div.th200::text').get().split(' ')[0]
        xingqi_time = li.css('div.th200::text').get().split(' ')[1]
        all_list = li.css('div.th140::text').getall()
        max_temp = all_list[0]
        min_temp = all_list[1]
        weather = all_list[2]
        wind_orient = all_list[3].split(' ')[0]
        wind_rank = all_list[3].split(' ')[1]
        dit = {
            '日期': date_time,
            '星期': xingqi_time,
            '最高温': max_temp,
            '最低温': min_temp,
            '天气': weather,
            '风向': wind_orient,
            '风力': wind_rank,
        }
        csv_writer.writerow(dit)
        print(date_time,xingqi_time,max_temp,min_temp,weather,wind_orient,wind_rank)

保存到csv文件:

 

接下来读取文件,对文件格式做调整,以进行绘图操作。 

df = pd.read_csv('天气数据.csv')
print(df.info())
df['日期'] = pd.to_datetime(df['日期'])
df['month_'] = df['日期'].dt.to_period('M')
new_data = df.groupby(['month_','天气']).size().reset_index()
new_data.columns = ['month','weather','count'] #改变列名
print(df.head)
print(new_data)
print(new_data[new_data['month']=='2023-01'][['weather','count']].sort_values(by='count',ascending=False).values.tolist())  # 条件筛选,获取一月份的天气和数量值,获取的是数据框格式
#.sort_values(by='count',ascending=False).values.tolist() 这段代码是按升序排序,获取值并转变为双列表格式
# [['多云', 14], ['小雨', 5], ['晴', 5], ['雾', 4], ['阴', 2], ['中雨', 1]]

new_data数据格式如下: 

 

现在进行绘图操作:

# 实例化一个时间序列的对象
timeline = Timeline()
timeline.add_schema(play_interval=1000)  #单位是毫秒
for month in new_data['month'].unique():
    data = (
        new_data[new_data['month'] == month][['weather', 'count']].sort_values(by='count',
                                                                                   ascending=False).values.tolist()
    )
    print(data)
    bar = (
        Bar()
        .add_xaxis([x[0] for x in data])
        .add_yaxis('',[x[1] for x in data])
        .reversal_axis()  #坐标轴倒转
        .set_global_opts(
            title_opts=opts.TitleOpts(title='厦门市2023年每月天气变化')
        )
        .set_series_opts(
            label_opts=opts.LabelOpts(position='right')
        )
    )
    timeline.add(bar,f'{month}')


timeline.render('天气轮播图.html')

 

点击轮播图下方的按钮就可以进行播放了。 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1910656.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

新手怎么使用《藏文翻译词典》查藏文单词和藏语近义词反义词?手把手教你写藏文作文!

西藏地区的学生常常需要使用藏语写作业写作文&#xff0c;同时还需要学习汉语中文&#xff0c;在这种情况下&#xff0c;一款好用的藏语翻译和藏文词典工具&#xff0c;就显得非常重要了&#xff0c;在这里教大家使用《藏文翻译词典》工具&#xff0c;利用它学习汉语和写好藏文…

excel表格移动一整行或者移动一整列

首先选中一整行&#xff0c;将鼠标移动到边边上&#xff0c;知道出现黑色十字型箭头鼠标头然后按住shift键&#xff0c;同时移动到想去的地方就可以了 注意&#xff1a;mac和Windows都是shift键&#xff0c;mac的option键只是将列复制一份到移动到的地方&#xff0c;然后移动到…

带有子节点的树状表的父节点拖动排序#Vue3#Sortable插件

带有子节点的树状表的父节点拖动排序#Vue3#Sortable插件 使用Sortable插件这里要保证获取到的是父节点的下标&#xff0c;属性newDraggableIndex获取到的就是只有父节点的下标。设置子节点不能被拖动&#xff0c;最后在逐个调用接口进行数据库中顺序的更新。 <template>…

两名程序员与一名运维人员历经整整一天的时间,成功解决了 nacos 登录时出现“ERR CONNECTION RESET,用户名或密码错误”这一棘手问题

上图看页面报错 这是网页应用提示的信息&#xff0c;服务器日志没有明显的错误日志&#xff0c;检查了账号密码是正常的。 再上第二张图 把这个信息发到百度上查找 通过上图的信息大概知道网络层的原因&#xff0c;可能是在网络安全方面被重置了 下面我们就验证下 1、在服务…

谈面向任务的多轮对话系统(TOD)

面向任务对话系统&#xff08;Task-Oriented Dialogue (TOD) Systems)主要是为解决特定任务的&#xff0c;比如订票任务&#xff08;订机票&#xff0c;电影票等&#xff09;&#xff0c;预定饭店等。这种对话往往需要多轮对话才能够完成。 多轮对话的例子 客户预定一个餐厅的…

数字力量助西部职教全面提升——唯众品牌大数据、人工智能系列产品中标甘肃庆阳职院数字经济人才培养基地!

近日&#xff0c;唯众品牌凭借在大数据和人工智能领域深耕多年的技术积累和卓越产品&#xff0c;成功中标庆阳职业技术学院全国一体化算力网络国家枢纽节点数字经济人才培养基地项目&#xff0c;标志着唯众在助力西部职业教育与数字经济融合发展的新征程上迈出了坚实的一步。 …

构建Android studio版的CarSystemUI工程时因为包名一致导致BuildConfig问题

项目场景&#xff1a; 公司计划开发杰发AC8025-Android 12版本车载平台&#xff0c;前期预研需要构建Android studio版的CarSystemUI工程 问题描述 AAOS车载项目里面的CarSystemUI源码默认无Android studio版本&#xff0c;为了后期快速开发调试需要构建Android studio能直接…

JavaWeb__XML、http

目录 一 、XML1.1 常见配置文件类型1.1.1 properties配置文件1.1.2 xml配置文件 1.2 DOM4J进行XML解析1.2.1 DOM4J的使用步骤1.2.2 DOM4J的API介绍 二、 HTTP协议2.1 HTTP简介2.2 请求和响应报文2.2.1 报文的格式2.2.2 请求报文2.2.3 响应报文 一 、XML XML是EXtensible Markup…

使用Puppeteer进行数据抓取保存为JSON

Puppeteer简介 Puppeteer是由Google Chrome团队开发的一个Node库&#xff0c;它提供了一个高级API来控制Chrome或Chromium的无头版本。Puppeteer能够执行各种任务&#xff0c;包括页面导航、内容抓取、屏幕截图、PDF生成等。 主要特点 无头浏览器控制&#xff1a;无需打开浏…

HybridCLR + Addressable 热更新篇(一)

目录 前言一、HybridCLR 和 Addressable 是什么&#xff1f;1. HybridCLR2. Addressable 二、使用步骤1.HybridCLR导入2.HybridCLR配置3.Addressable导入4.Addressable配置 前言 随着移动互联网和游戏行业的快速发展&#xff0c;热更新技术变得越来越重要。热更新能够在不重新…

文华财经红绿多空趋势量化买卖点指标公式源码

LC:REF(CLOSE,1); RSI1:SMA(MAX(CLOSE-LC,0),13,1)/SMA(ABS(CLOSE-LC),13,1)*100; RSIF:90-RSI1,COLOR33DD33; A4:((C-LLV(L,33))/(HHV(H,33)-LLV(L,33)))*67; ABC22:LLV(LOW,10); ABC33:HHV(HIGH,25); 动力线:EMA((CLOSE-ABC22)/(ABC33-ABC22)*4,4); RSV:(C-LLV(L,9))/…

【Unity 实用技巧】为游戏截图添加自定义水印LOGO

1. 前言 大家好&#xff0c;我是Mark。在Unity开发中&#xff0c;屏幕截图功能是一项常用的功能&#xff0c;它常用于游戏分享而默认的截图往往缺乏辨识度。本文将介绍如何在Unity中实现带有自定义LOGO的屏幕截图&#xff0c;话不多说开搞~ 2. 最终效果 3. 示例代码 代码比较…

婴幼儿自闭症的六大警示前兆:家长需警惕的早期信号

婴幼儿自闭症是一种复杂的发育障碍&#xff0c;其早期症状往往较为微妙&#xff0c;但若能及早发现并干预&#xff0c;对孩子的成长至关重要。以下是婴幼儿自闭症的六个主要前兆&#xff1a; 首先&#xff0c;目光呆滞与反应迟钝。婴儿期&#xff0c;孩子应能对外界刺激如声音…

Java基础-组件及事件处理(中)

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 BorderLayout布局管理器 说明&#xff1a; 示例&#xff1a; FlowLayout布局管理器 说明&#xff1a; …

Vue3项目如何使用npm link本地测试组件库

一、组件库操作 1、在组件库项目中先运行npm run lib&#xff0c;其效果如下 2、在组件库项目中在运行npm link&#xff0c;其效果如下 会创建一个全局的软连接指向本地的组件库 二、Vue3项目使用 1、在项目中运行 npm link 组件名称&#xff08;即&#xff1a;组件库packag…

Kettle常用参数配置

目录 一、时区二、时间戳三、tinyint类型转换 一、时区 Kettle链接mysql出现报错&#xff1a;Connection failed. Verify all connection parameters and confirm that the appropriate driver is installed. The server time zone value is unrecognized or represents more…

嵌入式单片机,两者有什么关联又有什么区别?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;使用单片机是嵌入式系统的…

HSG金属表面缺陷检测

HSG金属表面缺陷检测 1. 项目背景1.1 项目简述1.2 项目目标 2. 解决方案3. 数据集3.1 收集各种缺陷的图片3.2 利用有限图片创造更多可能3.3 分割图像3.4 打标签 4. 部分代码4.1 数据集划分4.2图像分割4.3 训练模型4.4 预测 5. 预测结果 1. 项目背景 1.1 项目简述 iPad HSG 的…

【运维】磁盘满了怎么办?如何快速找到占用空间的文件和腾出空间

机器用久了&#xff0c;很容易生成很多临时或者无用的文件&#xff0c;占用大量空间造成磁盘不够用。尤其是服务器&#xff0c;当磁盘不够用时&#xff0c;系统会出现莫名其妙的问题&#xff0c;数据库可能会造成数据损坏。此时快速定位可以删除的大文件并及时释放空间&#xf…

Linux内核网络性能问题的追踪(工具篇)

在现代计算环境中&#xff0c;网络性能对于系统的整体性能至关重要。网络瓶颈不仅会影响数据传输速度&#xff0c;还会影响应用程序的响应时间&#xff0c;最终影响用户体验。为了有效地解决网络性能问题&#xff0c;了解和使用各种追踪工具至关重要。另外一方面&#xff0c;造…