可以实现爬取全国的天气数据,存储为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爬取全国天气数据相关推荐

  1. python爬取历史天气数据

    爬取历史天气数据 import requests from requests.exceptions import RequestException from bs4 import BeautifulS ...

  2. Python 爬取全国天气

    来源 来自中国天气网 成果 爬取所有城市的URL 一个城市对应一个URL,所以需要获得所有城市的URL并保存到本地文件. 运行该步骤的时间会很长,但是一劳永逸,只需要跑一遍. 也可以选择下载我提供的文 ...

  3. python爬取历史天气数据并保存_Python爬取天气网历史天气数据

    我的第一篇博客,哈哈哈,记录一下我的Python进阶之路! 今天写了一个简单的爬虫. 使用python的requests 和BeautifulSoup模块,Python 2.7.12可在命令行中直接使 ...

  4. 用python爬取历史天气数据

    某天气网站(www.数字.com)存有2011年至今的天气数据,有天看到一本爬虫教材提到了爬取这些数据的方法,学习之,并加以改进. 准备爬的历史天气 爬之前先分析url.左上有年份.月份的下拉选择框, ...

  5. Python爬取城市天气数据,并作数据可视化

    1.爬取广惠河深2022-2024年的天气数据 import requests # 发送请求要用的模块 需要额外安装的 import parsel import csvf = open('广-惠-河- ...

  6. python爬取天气数据_用python爬取历史天气数据的方法示例

    某天气网站(www.数字.com)存有2011年至今的天气数据,有天看到一本爬虫教材提到了爬取这些数据的方法,学习之,并加以改进. 准备爬的历史天气 爬之前先分析url.左上有年份.月份的下拉选择框, ...

  7. python爬取天气数据_Python爬取历史天气数据

    Python爬取历史天气数据 作者:梅昊铭 1. 导读 之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取.今天Mo就来教大家如何使用Python来进行历史天气数据的 ...

  8. python爬取历史天气_Python 爬取历史天气数据

    Python 爬取历史天气数据 作者:梅昊铭 1. 导读 之前Mo给大家分享过杭州历年天气情况的数据集,相信有不少小伙伴好奇这些数据是怎么获取.今天Mo就来教大家如何使用Python来进行历史天气数据 ...

  9. 【爬虫实战】Python 自制天气预报程序!爬取全国天气网

    学会了爬虫,让我们自制一个天气预报的爬虫吧! 需求分析 1.用 requests 爬取 全国天气网 的网页源代码: 2.用 pyquery 解析网页源代码,取得天气情况信息的节点: 3.用 xlwt ...

最新文章

  1. 1、存在如下数列1、1、2、4、7、13、24、44、81、149......现要求该数列第n项的值(n从O开始算)。 程序运行结果: 1/2 输入:4 输出:7 输入:9 输出:149
  2. 逐行分析Hadoop的HelloWorld
  3. 关于db link权限分配的苦旅(一)
  4. Exercise 12: Prompting People
  5. 大学物理质点动力学思维导图_生理学 | 思维导图
  6. 最简单的 post 请求发起方式、调用其它系统接口
  7. VC创建可隐藏文件夹的方法
  8. 【待续】C数据结构2.3-顺序表之插入算法
  9. Xcode app修改项目名
  10. Kubernetes 小白学习笔记(6)--kubernetes的架构与组件-Master组件
  11. UVA10317- Equating Equations(回溯+剪枝)
  12. android方法中添加 N,AndroidN(7.0)Settings模块界面加载流程学习
  13. 灰色系统理论(Matlab实现)
  14. 快速获取InputBox选中区域的单个单元格引用地址
  15. AUTOCAD——打断命令、合并命令
  16. 公众号文章阅读量数据导出
  17. 阿里P8总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
  18. [从头读历史] 第271节 诗经 郑风
  19. xp系统开启 服务器配置,xp系统开启 服务器配置
  20. 一键关闭wi-fi蓝牙捷径_如何在Windows中使用键盘或桌面快捷方式打开或关闭Wi-Fi...

热门文章

  1. JS实现localStorage自动保存功能
  2. html5 驾考 答题样式,驾考科目一答题巧记方法
  3. qq邮箱怎么设置群发邮件
  4. 用for打印空心爱心
  5. 随机种子、torch.backends.cudnn.benchmark\.deterministic
  6. 手机AI拍照水太深:如何巧辨真伪?
  7. mysql存储ios表情_MySQL中支持emoji表情的存储
  8. 华为鸿蒙审核几天,鸿蒙审核需要多久?
  9. 向Android模拟器导入本地文件
  10. Java反射性能探讨