python爬虫案例-爬取山东各城市近两年的天气情况(附带源码)

【python】爬虫获取全国各个城市的历史天气、温度、风向和风力 输入: 年份:target_year_list = ["2013", "2014", "2015", "2016", "2017"] 城市信息(城市名 城市拼音):http://yinter.iteye.com/blog/575549 北京 BEIJING 上海 SHANGHAI 天津 TIANJIN 重庆 CHONGQING 阿克苏 AKESU 安宁 ANNING 安庆 AN... 阅读详情
咱们先看爬取的数据

在这里插入图片描述

话不多说
直接开始代码的编写
首先导入第三方库
import requests
import json
import parsel # 解析数据 第三方模块
# 导入内置模块来保存文件
import csv
打开csv文件写入我们要爬取的数据表头
with open('山东各个城市历史天气.csv', mode='a', newline='', encoding='utf-8')as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow(['日期','最高温','最低温','天气','风力风向','空气质量指数','城市'])

确定爬取的网站,然后拿到山东所有城市的ID
遍历爬取所有城市的天气
最后保存到本地
city_list=[54823,54734,54714,54736,54906,54915,54806,54938,54857,54945,54827,54843,54774,54765,54830,58024]
for city in city_list:

    for year in range(2021,2023):
        for month in range(1,13):
            url=f'https://tianqi.2345.com/Pc/GetHistory?areaInfo%5BareaId%5D={city}&areaInfo%5BareaType%5D=2&date%5Byear%5D={year}&date%5Bmonth%5D={month}'

            # 进行请求并接收
            response = requests.get(url = url)
            #返回<Response [200]> 说明接收正常
            #可以直接获取,不需要反爬措施

            # 获取数据,用json字典形式储存
            json_data = response.json()


            # 解析数据
            html_data= json_data['data']
            # .history-table tr
            selector=parsel.Selector(html_data)
            trs = selector.css('.history-table tr')[1:] # 不需要第一行
            for tr in trs:
                #::text:获取标签文本内容
                # .getall():  获取所有的td标签
                td = tr.css( 'td::text')
                if city==54823:
                    td.append('济南')
                elif city==54734:
                    td.append('滨州')
                elif city==54714:
                    td.append('德州')
                elif city==54736:
                    td.append('东营')
                elif city==54906:
                    td.append('菏泽')
                elif city==54915:
                    td.append('济宁')
                elif city==54806:
                    td.append('聊城')
                elif city==54938:
                    td.append('临沂')
                elif city==54857:
                    td.append('青岛')
                elif city==54945:
                    td.append('日照')
                elif city==54827:
                    td.append('泰安')
                elif city==54843:
                    td.append('潍坊')
                elif city==54774:
                    td.append('威海')
                elif city==54765:
                    td.append('烟台')
                elif city==54830:
                    td.append('淄博')
                elif city==58024:
                    td.append('枣庄')

                print(td)
                with open('山东各个城市历史天气.csv',mode='a',newline='',encoding='utf-8')as f:
                    csv_writer=csv.writer(f)
                    csv_writer.writerow(td)
全部源码放在这
# coding:utf-8
# author:songxin
# email:812067265@qq.com
# -- coding: utf-8 --
'''目标:爬取天气后报网山东各个城市天气'''
#导入requests模块
#在Terminal中输入pip install requests

import requests
import json
import parsel # 解析数据 第三方模块
# 导入内置模块来保存文件
import csv

with open('山东各个城市历史天气.csv', mode='a', newline='', encoding='utf-8')as f:
    csv_writer = csv.writer(f)
    csv_writer.writerow(['日期','最高温','最低温','天气','风力风向','空气质量指数','城市'])

# 确定目标网站 2345天气网
#先爬取山东济南历史天气
city_list=[54823,54734,54714,54736,54906,54915,54806,54938,54857,54945,54827,54843,54774,54765,54830,58024]
for city in city_list:

    for year in range(2021,2023):
        for month in range(1,13):
            url=f'https://tianqi.2345.com/Pc/GetHistory?areaInfo%5BareaId%5D={city}&areaInfo%5BareaType%5D=2&date%5Byear%5D={year}&date%5Bmonth%5D={month}'

            # 进行请求并接收
            response = requests.get(url = url)
            #返回<Response [200]> 说明接收正常
            #可以直接获取,不需要反爬措施

            # 获取数据,用json字典形式储存
            json_data = response.json()


            # 解析数据
            html_data= json_data['data']
            # .history-table tr
            selector=parsel.Selector(html_data)
            trs = selector.css('.history-table tr')[1:] # 不需要第一行
            for tr in trs:
                #::text:获取标签文本内容
                # .getall():  获取所有的td标签
                td = tr.css( 'td::text')
                if city==54823:
                    td.append('济南')
                elif city==54734:
                    td.append('滨州')
                elif city==54714:
                    td.append('德州')
                elif city==54736:
                    td.append('东营')
                elif city==54906:
                    td.append('菏泽')
                elif city==54915:
                    td.append('济宁')
                elif city==54806:
                    td.append('聊城')
                elif city==54938:
                    td.append('临沂')
                elif city==54857:
                    td.append('青岛')
                elif city==54945:
                    td.append('日照')
                elif city==54827:
                    td.append('泰安')
                elif city==54843:
                    td.append('潍坊')
                elif city==54774:
                    td.append('威海')
                elif city==54765:
                    td.append('烟台')
                elif city==54830:
                    td.append('淄博')
                elif city==58024:
                    td.append('枣庄')

                print(td)
                with open('山东各个城市历史天气.csv',mode='a',newline='',encoding='utf-8')as f:
                    csv_writer=csv.writer(f)
                    csv_writer.writerow(td)

(简单、有源代码、教程)爬虫案例之爬取天气排行 (简单、有源代码、教程)爬虫案例之爬取天气排行,这个教程将会爬取网站中的天气排行,包括今日最高气温、昼夜温差、24小时降水,并保存在本地csv文件中 我是初学者,希望大家和我多多交流,这样我才可以快快进步,拜托了/抱拳 阅读详情

相关推荐

Python自动化生成山东厂长薪酬调查报告:从爬虫到PDF全流程

在数据驱动的时代,掌握从公开数据中挖掘商业情报的能力至关重要。通过Python的requests与BeautifulSoup库,可以高效采集招聘网站上的公开职位信息,利用Pandas完成数据清洗、标准化与异常值过滤,并结合分位数统计与Matplotlib可视化洞察薪酬分布规律。这一自动化流水线不仅大幅提升数据处理的效率与可复现性,还广泛应用于行业薪酬调研、人才市场分析等场景。本文将以此技术路径为框架,演示如何从爬取山东地区厂长职位数据出发,最终生成一份2022年山东省厂长薪酬PDF调查报告,实现从数据采集到

weixin_29285605的博客 214

Python可以这样学(第十季:网络爬虫实战)

陆续介绍和分享一些网络爬虫方面的案例,Python基础知识可以参考前面的“Python可以这样学”9套系列课程,或者阅读董付国老师Python系列教材《Python程序设计(第2版)》、《Python程序设计基础(第2版)》、《Python可以这样学》、《Python程序设计开发宝典》或《中学生可以这样学Python》、《玩转Python轻松过二级》、《Python程序设计基础与应用》。

使用scrapy爬取全国所有城市的天气信息

使用scrapy爬取全国所有城市的天气信息,爬取的是中国天气网的信息。

Python爬虫实战(基础篇)—9获取某个城市天气(附完整代码)

python爬取天气,python获取天气信息 爬虫天气信息

weixin_42636075的博客 7465

推荐国内可使用的chatGPT的工具

是基于ChatGPT 3.5和ChatGPT 4开发的chatGPT应用程序版,这个应用可以直接使用而不需要魔法,如果我们有自己的APT KEY的话可以一直使用,但是如果没有的话,我们只能使用ChatGPT 3.5 版本的,次数也是有所限制,应该是20次每天,这也足够我们的使用了,响应的速度也是非常的快。

有你真好的博客 1万+

现代密码学5.3--Hash and MAC

现代密码学5.3--Hash and MAC 博主正在学习INTRODUCTION TO MODERN CRYPTOGRAPHY (Second Edition) --Jonathan Katz, Yehuda Lindell,做一些笔记供自己回忆,如有错误请指正。整理成一个系列现代密码学,方便检索。 第二章定义了完美安全及其对应的密码方案“一次一密”, 第三章介绍了多种安全定义 3.1-3.3 计算安全,PRG和基于PRG构造的满足计算安全的密码方案; 3.4-3.5 CPA安全,PRF和基于PRF构

qq_41545715的博客 685

Python入门(安装)——第一个爬虫程序(爬取山东各城市天气信息)

Python爬虫原来可以这么简单,前两天有个朋友让我帮她看一下爬取天气的一段程序有什么问题,这段程序是用Python写的,只是以前听说Python爬虫很厉害,但是不知道自己怎么会没有时间开始。刚好我也乘此机会学习一下Python爬虫,原来Python爬虫可以这么简单。特此记录一下第一次Python爬虫。 参考链接: 手把手教你使用Python+scrapy爬取山东各城市天气预报 Python...

Clare Tung 4956

uniapp: err = err.replace(this._UNI_INPUT_DIR_REG, ‘UNI_TypeError: err.replace is not a function问题修复

问题:uniapp的依赖包出现了问题,需要升级解决办法:升级uniapp依赖包,下载"semver"和”@dcloudio/uni-i18n“两个包,本地锁定postcss为7版本,就解决了。

py_boy的博客 1453

爬虫实例:链家二手房数据爬取

​ 需求:根据用户所选省份及城市爬取对应的二手房数据及图片,并将数据保存到excel中,图片保存到文件夹中,得到的数值类型的单价、总价和关注度,并画出单价与关注度,总价与关注度的图像,并找出关注度最高的二手房单价和总价。

bagell的博客 5337

POWER(十一)charge pump原理

电荷泵是一种基于电容充放电原理的DC-DC转换电路,通过开关控制实现电压转换,包括升压、降压和负压输出。其核心是利用电荷守恒原理,通过电容存储和转移电荷来改变输出电压。典型拓扑结构包括倍压电路和多阶升压电路,具有结构简单、体积小等优势。关键参数包括转换效率、输出电流能力和开关频率,适用于芯片供电、显示屏驱动等低功耗场景。LVDS部分补充说明了自举电路在驱动电路中的应用及其自同步特性。

zhlwsh的博客 2816

第10.6章 FAST-LIO源码解读(三): iekf模块大揭秘,从公式到代码一看就懂

FAST-LIO中的IEKF模块解析:本文深入剖析了FAST-LIO定位框架中迭代扩展卡尔曼滤波(IEKF)的实现原理。文章首先介绍IEKF作为"激光+IMU融合"计算器的核心作用,解释其通过IMU高频预测和激光点云校正实现厘米级定位的原理。随后详细拆解了代码实现中的关键设计:包括状态量定义(位置、姿态、速度等)、过程噪声建模、状态转移方程推导,以及SO3与欧拉角转换等核心算法。特别强调了IEKF通过迭代优化解决非线性问题的优势,使其在无人机等快速运动场景中保持稳定定位。

行知SLAM 231

python爬虫简单爬取天气_Python爬虫项目实战——爬取全国城市历史天气气象数据...

爬虫着实是数据采集中的神器,借助于爬虫的合理设计与实现我们能够很方便地从网络环境中采集到所需要的数据,之后借助于相应的数据解析组件可以快速地抽取得到所需要的数据项。今天有一个数据获取需求,之前采集的天气、气象等数据源大都是实时性质的,没有提供出来历史数据。这里需要做的就是对历史数据做一个爬取,我们选用的网站为天气后报网站,网页截图如下:第一眼看到的时候就给人一种,丑到爆炸的感觉有没有,但是呢,我们...

weixin_42350755的博客 1492

2024年数字IC秋招-格科微-数字电路设计工程师-笔试题

笔试题型:简答题(9个)笔试平台:牛客(电脑监控)笔试时间:2h。

qq_42135020的博客 1605

Python爬取山东各省市天气并进行可视化

编辑器 Pycharm 版本2017.2.1 爬取网址 http://www.weather.com.cn/textFC/shandong.shtml 将网址七天内的所有信息进行可视化 代码还有改进空间 #导入所需要的库 import requests import re import matplotlib.pyplot as plt from bs4 import BeautifulSoup f...

qq_44745792的博客 1224

081、LLC谐振变换器的短路特性与保护

本文深入分析了LLC谐振变换器在短路工况下的特性与保护策略。作者通过实际案例指出,LLC在输出短路时会出现谐振电流失控、ZVS条件丧失等危险现象,导致MOS管炸毁。文章详细阐述了短路保护的三大难点:响应速度、频率与电流的耦合、重启策略,并提出了硬件级快速保护、频率快速拉升、打嗝模式等实用解决方案。作者分享了关键参数设计经验,包括电流检测阈值设置、最高频率限制和保护响应时间控制,并通过实测波形验证了保护效果。最后总结出五点重要经验,强调硬件保护的必要性和系统设计的注意事项,为LLC变换器的短路保护设计提供了有

Jack010169的博客 76

手把手教你学Simulink——基于Simulink的机械臂正运动学仿真建模示例

机械臂正运动学概述正运动学的核心在于根据每个关节的角度值,通过坐标变换(如DH参数法或齐次变换矩阵)计算出末端执行器相对于基座的位置和姿态。常用的数学工具包括旋转矩阵、平移向量以及它们组合而成的齐次变换矩阵。仿真目标设计并实现一个机械臂正运动学模型。输入关节角度,输出末端执行器的位置和姿态。分析不同关节角度下的机械臂位置变化。假设我们有一个简单的3自由度(DOF)平面机械臂,其各关节的长度分别为l1l1​、l2l2​和l3l3​。在Simulink中,可以使用。

MHD0815的博客 359

爬虫实例:爬取二手房数据

​ 需求:根据用户所选省份及城市爬取对应的二手房数据及图片,并将数据保存到excel中,图片保存到文件夹中,得到的数值类型的单价、总价和关注度,并画出单价与关注度,总价与关注度的图像,并找出关注度最高的二手房单价和总价。

m0_73614183的博客 3029

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

python爬取本地天气信息_Python爬虫项目实战——爬取全国城市历史天气气象数据...

爬虫着实是数据采集中的神器,借助于爬虫的合理设计与实现我们能够很方便地从网络环境中采集到所需要的数据,之后借助于相应的数据解析组件可以快速地抽取得到所需要的数据项。今天有一个数据获取需求,之前采集的天气、气象等数据源大都是实时性质的,没有提供出来历史数据。这里需要做的就是对历史数据做一个爬取,我们选用的网站为天气后报网站,网页截图如下:第一眼看到的时候就给人一种,丑到爆炸的感觉有没有,但是呢,我们...

weixin_39753747的博客 547

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

python 爬虫爬取疫情数据,基于pyecharts绘制交互式可视化疫情地图【所有源码在最下方链接】(三)

源码在最下方链接中,pyecharts库绘制中国疫情地图,好玩到手软

m0_65833575的博客 1163

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【爬虫+数据清洗+可视化】用Python分析“淄博烧烤”的评论数据

马哥原创:用Python分析「淄博烧烤」热门评论。爬虫+数据清洗+数据可视化。

马哥的专栏 5471

基于Python爬虫山东青岛美食商家数据可视化系统设计与实现(Django框架) 研究背景与意义、国内外研究现状_美食数据与可视化分析(1)

因此,开发一套基于Python爬虫的山东青岛美食商家数据可视化系统,可以为用户提供青岛美食商家的相关信息,帮助用户了解青岛的美食文化,提供给用户一个更好的美食选择平台。总之,通过本研究的设计与实现,可以为用户提供一种更直观、便捷的方式了解青岛的美食商家信息,促进美食市场的发展,提升用户的体验和满意度。这是我花了几天的时间去把Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

2401_84139711的博客 566

基于python的山东省降雨量数据分析及可视化

本研究基于Python编程语言,利用Pandas、NumPy、Matplotlib和Seaborn等数据分析与可视化库,对山东省降雨量数据进行处理与分析。数据来源于山东省气象局公开的历年降雨量记录,涵盖多个气象站点的时间序列数据。通过数据清洗、缺失值处理及异常值检测,确保数据质量满足分析需求。采用时间序列分析方法,探索山东省降雨量的年际、季节和月度变化规律。统计指标包括年均降雨量、降雨量标准差及极端降雨事件频率,揭示降雨量的时空分布特征。

专注分享bishe530的博客 655

Python爬虫脚本,利用find爬取普通网页(源码)

BeautifulSoup+ Find + Oracle爬取 不想存库的话直接用CSV做成表格数据也是可以的,方便了上班族 # 全国城市 import requests from bs4 import BeautifulSoup import cx_Oracle import os import uuid os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_...

Jaeger_Java的博客 745

爬虫实战复盘:山东政务噪声数据逆向爬取踩坑全记录

基础爬虫

2403_87740391的博客 559

计算机毕业设计 |基于Python爬虫+Django的山东省旅游大屏可视化分析 旅游景点推荐系统 |K-means满意度分析 大数据专业毕业设计 实战教学

本文介绍了一个基于Python+Django的山东省旅游大屏可视化分析系统,集成了数据爬取、推荐算法和可视化功能。系统通过爬虫从携程网获取景点数据,采用Echarts实现多维度可视化分析(包括等级分布、评分趋势等),并运用协同过滤算法进行个性化景点推荐。关键技术包括:Python爬虫、Django框架、MySQL数据库、协同过滤算法和Echarts可视化。系统为游客提供智能决策支持,同时助力管理部门进行市场分析,具有实用性和扩展性,为区域旅游智能化发展提供了可行方案。

qq_1445749146的博客 638
上一篇: 用python来写一个视频播放小工具(附带源码)
下一篇: python第三方库-argparse的使用(简单实用)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值