【爬虫实战】——Python爬取天气信息_天气数据爬虫数据

1 Python网页爬虫简介

  Python是一种广受欢迎的编程语言,广泛应用于各类应用开发,网页爬虫开发也是其中之一。网页爬虫是一种自动化工具,它在互联网上进行数据搜集。Python拥有丰富的库和框架,使得构建网页爬虫变得相对简单。

  网页爬虫的工作方式类似于人类浏览网页,它向网站发出请求,获取网页的HTML源码,然后分析这些代码以提取所需信息。Python的requests库和BeautifulSoup库是实现这一过程的关键组件。

  一个典型的Python网页爬虫系统包括以下几个核心组件:

  1. 调度器(Scheduler):负责调度URL管理器、下载器、解析器之间的协调工作。

  2. URL管理器(URL Manager):包括待爬取的URL地址和已爬取的URL地址,防止重复抓取URL和循环抓取URL。

  3. 网页下载器(Web Downloader):负责从互联网上下载网页的HTML代码。

  4. 网页解析器(Web Parser):负责解析网页的HTML代码,提取出所需的数据。

  5. 应用程序(Application):从网页中提取的有用数据组成的一个应用。

  在开发Python爬虫时,开发者需要尊重网站的robots.txt文件,以确保不违反任何规定或造成网站负担。同时,也需要妥善处理网络异常和错误,保证爬虫的稳定性和可靠性。

  综上所述,Python凭借其强大的库和工具,成为开发高效、稳定网页爬虫的理想选择,使开发者能够轻松地从互联网中抓取所需数据。

由于篇幅限制,如果你正在学习Python或者有计划学习Python,想要突破自我,对未来十分迷茫的,可以点击这里获取最新最完整的Python学习资料和学习路线规划(免费分享,记得关注)  

2 爬虫实战

2.1 导入相关包

import requestsimport pandas as pdimport re

2.2 爬取时间范围及城市设置​​​​​​​

months = [1,2,3,4,5,6,7,8,9,10,11,12]years = [2016,2017,2018,2019,2020,2021,2022,2023] citys = [59287]

此处城市代码选取‘59287’,实际操作可另选区域或多区域。

2.3 爬取信息设置​​​​​​​

index_ = ['MaxTemp','MinTemp', 'WindDir', 'Wind', 'Weather','Aqi','AqiInfo','AqiLevel'] # 选取的气象要素

2.4 天气信息抓取​​​​​​​

data = pd.DataFrame(columns=index_)  # 建立一个空dataframefor c in citys:    for y in years:        for m in months:            # 找到json格式数据的url            if (y<2017) or (y==2017)&(m<=11):                url = "http://tianqi.2345.com/t/wea_history/js/"+str(c)+"_"+str(y)+str(m)+".js" # ?qq-pf-to=pcqq.c2c            else:                url = "http://tianqi.2345.com/t/wea_history/js/"+str(y)+str(m).zfill(2)+"/"+str(c)+"_"+str(y)+str(m).zfill(2)+".js"            print(url)            response = requests.get(url=url)            if response.status_code == 200:  # 防止url请求无响应                response2 = response.text.replace("'", '"')  # 这一步可以忽略                #  利用正则表达式获取各个气象要素(方法不唯一)                date = re.findall("[0-9]{4}-[0-9]{2}-[0-9]{2}", response2)[:-2]                mintemp = re.findall('yWendu:"(.*?)℃', response2)                maxtemp = re.findall('bWendu:"(.*?)℃', response2)                winddir = re.findall('fengxiang:"([\u4E00-\u9FA5]+)',response2)                wind = re.findall('fengli:"([\u4E00-\u9FA5]+)',response2)                weather = re.findall('tianqi:"([[\u4E00-\u9FA5]+)~?', response2)                aqi = re.findall('aqi:"(\d*)',response2)                aqiInfo = re.findall('aqiInfo:"([\u4E00-\u9FA5]+)',response2)                aqiLevel = re.findall('aqiLevel:"(\d*)',response2)                data_spider = pd.DataFrame([maxtemp,mintemp, winddir, wind, weather,aqi,aqiInfo,aqiLevel]).T                data_spider.columns = index_  # 修改列名                data_spider.index = date  # 修改索引                data = pd.concat((data,data_spider), axis=0)  # 数据拼接                print('%s年%s月的数据抓取成功' % (y, m))            else:                print('%s年%s月的数据不存在' % (y, m))                break

2.4 结果存储​​​​​​​

data.to_excel('D:\\天气数据可视化\\天气数据可视化.xlsx')print('爬取数据展示:\n', data)

2.5 效果展示

图片

3 完整代码​​​​​​​

由于篇幅有限,完整代码需要点击这里自行获取 

另外

我精心筹备了一份全面的Python学习大礼包,完全免费分享给每一位渴望成长、希望突破自我现状却略感迷茫的朋友。无论您是编程新手还是希望深化技能的开发者,都欢迎加入我们的学习之旅,共同交流进步!

🌟 学习大礼包包含内容:

Python全领域学习路线图:一目了然,指引您从基础到进阶,再到专业领域的每一步学习路径,明确各方向的核心知识点。

超百节Python精品视频课程:涵盖Python编程的必备基础知识、高效爬虫技术、以及深入的数据分析技能,让您技能全面升级。

实战案例集锦:精选超过100个实战项目案例,从理论到实践,让您在解决实际问题的过程中,深化理解,提升编程能力。

华为独家Python漫画教程:创新学习方式,以轻松幽默的漫画形式,让您随时随地,利用碎片时间也能高效学习Python。

互联网企业Python面试真题集:精选历年知名互联网企业面试真题,助您提前备战,面试准备更充分,职场晋升更顺利。

👉 立即领取方式:只需【点击这里】,即刻解锁您的Python学习新篇章!让我们携手并进,在编程的海洋里探索无限可能

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值