python爬取全国天气数据
可以实现爬取全国的天气数据,存储为csv文件
数据来源为http://m.tianqi.com
需要requests, bs4, pandas, lxml库
对应的安装命令
pip install requests
pip install bs4
pip install pandas
pip install lxml
生成的文件会保存在D://one.csv 对应的运行环境为python 3.10.7
import requests
import pandas as pd
from bs4 import BeautifulSoup# 报文头伪装
heads = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'}begin_year = 2020 # 开始年份
end_year = 2023 # 结束年份+1# 获取对应城市的数据
def get_city(city, province):print("===================正在爬取{}中=====================".format(city))# 批量创建列表存储对应数据province_list, city_list, years_list, month_list, average_max_temperature, average_min_temperature, max_temperature, min_temperature, max_air_quality, min_air_quality = [list() for x in range(10)]# 遍历需要爬去数据的年份for year in range(begin_year, end_year):# 遍历12个月for mon in range(1, 13):# 得出时间如202001times = year * 100 + mon# 去除province两侧的 '/'province_list.append(province[1:-1])# 去除city两侧的 '/'city_list.append(city[1:-1])years_list.append(str(year))month_list.append(str(mon))# 装填对应urlurl_city = "https://m.tianqi.com/lishi{}{}.html".format(city, times)# 将得到数据转换成二进制res = requests.get(url_city, headers=heads).content.decode()# 用lxml解析对应数据soup = BeautifulSoup(res, 'lxml')# 查找属性 class = 'count_temp'class_count_temp = soup.find_all(attrs={'class': 'count_temp'})# 查找标签 tdlist_td = class_count_temp[0].find_all('td')list_h5 = []for t in list_td:list_h5.append(t.h5.text)average_max_temperature.append(list_h5[0])average_min_temperature.append(list_h5[1])max_temperature.append(list_h5[2])min_temperature.append(list_h5[3])max_air_quality.append(list_h5[4])min_air_quality.append(list_h5[5])# 将数据流存储到datas中datas = pd.DataFrame({'省份': province_list, '城市': city_list, '年份': years_list, '月份': month_list, '平均高温': average_max_temperature,'平均低温': average_min_temperature, '极端高温': max_temperature, '极端低温': min_temperature, '空气最好': max_air_quality,'空气最差': min_air_quality})# 导出数据datas.to_csv('D:\one.csv', encoding='utf_8_sig', mode='a')# 获取对应省份的数据
def get_province(province):# 打印省份名print("=============={}================".format(province))# 填充urlurl = 'https://m.tianqi.com{}/'.format(province)# 获取网页res = requests.get(url, headers=heads).content.decode()# 解析网页soup = BeautifulSoup(res, 'lxml')# 查找标签ci = soup.find_all(attrs={'class': 'more_weather2'})# 查找标签list_a = ci[0].find_all('a')# 该省份所拥有的城市listlist_city = []for w in list_a:# 提取城市名list_city.append(w.get('href')[0:-7])# 遍历城市for t in list_city:get_city(t, province)if __name__ == '__main__':# 获取网页response = requests.get('https://m.tianqi.com/lishi/', headers=heads).content.decode()# 解析网页 得到文档树soup = BeautifulSoup(response, 'lxml')# 得到a标签列表list_a = soup.find_all('a')# 用于装省份名的列表all_province_list = []province_city_list = ["/beijing", "/tianjin", "/chongqing", "/shanghai", "/hongkong", "/aomen"]for i in range(44, 78):all_province_list.append(list_a[i].get('href'))# ==================================预处理完成===================================# 遍历全国省份(含台湾)for i in all_province_list:tmp = i[6:]# 如果是直辖市continueif tmp in province_city_list:continueget_province(tmp)# 遍历全国直辖市(含港澳)for i in province_city_list:temp = i + "/"get_city(temp, temp)print("*************执行结束****************")
# get_province("/taiwan")
# get_city("/beijing/", "/beijing/")
python爬取全国天气数据相关推荐
- python爬取历史天气数据
爬取历史天气数据 import requests from requests.exceptions import RequestException from bs4 import BeautifulS ...
- Python 爬取全国天气
来源 来自中国天气网 成果 爬取所有城市的URL 一个城市对应一个URL,所以需要获得所有城市的URL并保存到本地文件. 运行该步骤的时间会很长,但是一劳永逸,只需要跑一遍. 也可以选择下载我提供的文 ...
- python爬取历史天气数据并保存_Python爬取天气网历史天气数据
我的第一篇博客,哈哈哈,记录一下我的Python进阶之路! 今天写了一个简单的爬虫. 使用python的requests 和BeautifulSoup模块,Python 2.7.12可在命令行中直接使 ...
- 用python爬取历史天气数据
某天气网站(www.数字.com)存有2011年至今的天气数据,有天看到一本爬虫教材提到了爬取这些数据的方法,学习之,并加以改进. 准备爬的历史天气 爬之前先分析url.左上有年份.月份的下拉选择框, ...
- Python爬取城市天气数据,并作数据可视化
1.爬取广惠河深2022-2024年的天气数据 import requests # 发送请求要用的模块 需要额外安装的 import parsel import csvf = open('广-惠-河- ...
- python爬取天气数据_用python爬取历史天气数据的方法示例
某天气网站(www.数字.com)存有2011年至今的天气数据,有天看到一本爬虫教材提到了爬取这些数据的方法,学习之,并加以改进. 准备爬的历史天气 爬之前先分析url.左上有年份.月份的下拉选择框, ...
- python爬取天气数据_Python爬取历史天气数据
Python爬取历史天气数据 作者:梅昊铭 1. 导读 之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取.今天Mo就来教大家如何使用Python来进行历史天气数据的 ...
- python爬取历史天气_Python 爬取历史天气数据
Python 爬取历史天气数据 作者:梅昊铭 1. 导读 之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取.今天Mo就来教大家如何使用Python来进行历史天气数据 ...
- 【爬虫实战】Python 自制天气预报程序!爬取全国天气网
学会了爬虫,让我们自制一个天气预报的爬虫吧! 需求分析 1.用 requests 爬取 全国天气网 的网页源代码: 2.用 pyquery 解析网页源代码,取得天气情况信息的节点: 3.用 xlwt ...
最新文章
- 1、存在如下数列1、1、2、4、7、13、24、44、81、149......现要求该数列第n项的值(n从O开始算)。 	程序运行结果: 	1/2 	输入:4 	输出:7 	输入:9 	输出:149
- 逐行分析Hadoop的HelloWorld
- 关于db link权限分配的苦旅(一)
- Exercise 12: Prompting People
- 大学物理质点动力学思维导图_生理学 | 思维导图
- 最简单的 post 请求发起方式、调用其它系统接口
- VC创建可隐藏文件夹的方法
- 【待续】C数据结构2.3-顺序表之插入算法
- Xcode app修改项目名
- Kubernetes 小白学习笔记(6)--kubernetes的架构与组件-Master组件
- UVA10317- Equating Equations(回溯+剪枝)
- android方法中添加 N,AndroidN(7.0)Settings模块界面加载流程学习
- 灰色系统理论(Matlab实现)
- 快速获取InputBox选中区域的单个单元格引用地址
- AUTOCAD——打断命令、合并命令
- 公众号文章阅读量数据导出
- 阿里P8总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
- [从头读历史] 第271节 诗经 郑风
- xp系统开启 服务器配置,xp系统开启 服务器配置
- 一键关闭wi-fi蓝牙捷径_如何在Windows中使用键盘或桌面快捷方式打开或关闭Wi-Fi...