爬虫:python如何获得天气数据

这篇具有很好参考价值的文章主要介绍了爬虫:python如何获得天气数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 1.先安装以下库

import requests 
from bs4 import BeautifulSoup as bs
import pandas as pd
from pandas import Series,DataFrame

2.爬取数据

2.1 网站的内容

主要是下方的天气情况

爬虫:python如何获得天气数据

2.2开始与网站获得连接

headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.63',
        'Host':'lishi.tianqi.com',
        'Accept-Encoding': "gzip, deflate",
        'Connection': "keep-alive",
        'cache-control': "no-cache"}   
url='https://lishi.tianqi.com/ganyu/202208.html'#输入你想爬取地方的数据
resp= requests.request("GET", url, headers=headers)
resp

当出现<Response[200]>时,此刻以与网站连接成功

爬虫:python如何获得天气数据

2.3对网页进行解析

 采用‘utf-8’来对爬去的信息进行解码,对网页解析用到BeautifulSoup库。

        当出现网站访问成功,却得不到数据时。

html.parser换成其他Beautiful Soup支持的解析器试试,每个人电脑适用不同的,比如lxml,xml,html51lib

resp.encoding = 'utf-8'
soup = bs(resp.text,'html.parser')

 这里有网页里所有的内容。我们需要从这里提取出我们想要的内容。我们回到要爬取的网页,按F12可以在Elements里面看到网页的源码。爬虫:python如何获得天气数据

   了解过它的结构后,我们可以用BeautifulSoup里面的find和find_all来选取想要的内容。

data_all=[]
tian_three=soup.find("div",{"class":"tian_three"})
lishitable_content=tian_three.find_all("li")
for i in lishitable_content:
    lishi_div=i.find_all("div")
    data=[]
    for j in lishi_div:
        data.append(j.text)
    data_all.append(data)

 可以看一下现在的data_all的样子爬虫:python如何获得天气数据

 以为当天为 2022-08-21,所以当月数据到8月21日就截止了爬虫:python如何获得天气数据

 3 数据的整理与存储

给每一列附上列名

weather=pd.DataFrame(data_all)
weather.columns=["当日信息","最高气温","最低气温","天气","风向"]
weather_shape=weather.shape
weather

爬取weather的结果显示

爬虫:python如何获得天气数据

 weather 表中当日信息为日期+星期,后期数据分析不大方便,所以要对数据处理

weather['当日信息'].apply(str)
result = DataFrame(weather['当日信息'].apply(lambda x:Series(str(x).split(' '))))
result=result.loc[:,0:1]
result.columns=['日期','星期']
weather.join(result)

结果如下

爬虫:python如何获得天气数据

 如果数据没有太多要求,此处就可以保存了,在csv中更改一下行列。

如果有要求参考如下

weather['当日信息'].apply(str)
result = DataFrame(weather['当日信息'].apply(lambda x:Series(str(x).split(' '))))
result=result.loc[:,0:1]
result.columns=['日期','星期']
weather['风向信息'].apply(str)
result1 = DataFrame(weather['风向信息'].apply(lambda x:Series(str(x).split(' '))))
result1=result1.loc[:,0:1]
result1.columns=['风向','级数']
weather=weather.drop(columns='当日信息')
weather=weather.drop(columns='风向信息')
weather.insert(loc=0,column='日期', value=result['日期'])
weather.insert(loc=1,column='星期', value=result['星期'])
weather.insert(loc=5,column='风向', value=result1['风向'])
weather.insert(loc=6,column='级数', value=result1['级数'])

这个时候weather显示为:结果展示已经相当的漂亮了

爬虫:python如何获得天气数据

 最后就以csv格式直接保存文件了

weather.to_csv("XXX.csv",encoding="utf_8")

完整代码

import requests 
from bs4 import BeautifulSoup as bs
import pandas as pd
from pandas import Series,DataFrame
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.102 Safari/537.36 Edg/104.0.1293.63',
        'Host':'lishi.tianqi.com',
        'Accept-Encoding': "gzip, deflate",
        'Connection': "keep-alive",
        'cache-control': "no-cache"}   
url='https://lishi.tianqi.com/ganyu/202208.html'
resp= requests.request("GET", url, headers=headers)
resp.encoding = 'utf-8'
soup = bs(resp.text,'html.parser')
data_all=[]
tian_three=soup.find("div",{"class":"tian_three"})
lishitable_content=tian_three.find_all("li")
for i in lishitable_content:
    lishi_div=i.find_all("div")
    data=[]
    for j in lishi_div:
        data.append(j.text)
    data_all.append(data)
weather=pd.DataFrame(data_all)
weather.columns=["当日信息","最高气温","最低气温","天气","风向信息"]
weather_shape=weather.shape
weather['当日信息'].apply(str)
result = DataFrame(weather['当日信息'].apply(lambda x:Series(str(x).split(' '))))
result=result.loc[:,0:1]
result.columns=['日期','星期']
weather['风向信息'].apply(str)
result1 = DataFrame(weather['风向信息'].apply(lambda x:Series(str(x).split(' '))))
result1=result1.loc[:,0:1]
result1.columns=['风向','级数']
weather=weather.drop(columns='当日信息')
weather=weather.drop(columns='风向信息')
weather.insert(loc=0,column='日期', value=result['日期'])
weather.insert(loc=1,column='星期', value=result['星期'])
weather.insert(loc=5,column='风向', value=result1['风向'])
weather.insert(loc=6,column='级数', value=result1['级数'])
weather.to_csv("XX的天气.csv",encoding="utf_8")

文章部分思路参考于:Python爬虫--爬取历史天气数据文章来源地址https://www.toymoban.com/news/detail-447394.html

到了这里,关于爬虫:python如何获得天气数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 爬虫爬取天气

    爬虫5步曲: 1.安装requests and beacutifulsoup4库 2.获取爬虫所需的header 和cookie 3.获取网页,解析网页 4.分析得到的数据简化地址 5.爬取内容,清洗数据 1.安装requestsbeautifulsoup4         pip3 install requests         pip3 install beautifulsoup4 2.获取爬虫所需的header 和cookie 打开想爬取的

    2024年02月08日
    浏览(37)
  • 【python爬虫】——历史天气信息爬取

    在2345天气信息网2345天气网 依据 地点 和 时间 对相关城市的历史天气信息进行爬取。 网页使用get方式发送请求,所需参数包括areaInfo[areaId]、areaInfo[areaType]、date[year]、date[month],分别为城市id、城市类型,年、月。

    2024年02月07日
    浏览(53)
  • 基于网络爬虫的天气数据分析

    网络爬虫原理   网络爬虫是一种自动化程序,用于从互联网上获取数据。其工作原理可以分为以下几个步骤: 定义起始点:网络爬虫首先需要定义一个或多个起始点(URL),从这些起始点开始抓取数据。 发送HTTP请求:爬虫使用HTTP协议向目标网站发送请求,获取网页内容。

    2024年01月19日
    浏览(47)
  • 爬虫系列实战:使用json解析天气数据

    大家好,爬虫是一项非常抢手的技能,收集、分析和清洗数据是数据科学项目中最重要的部分,本文介绍使用json解析气象局天气数据。 在官网上获取天气数据信息,可以定义当前查询的位置,提取时间、温度、湿度、气压、风速等信息,并导入requests、matplotlib这些需要用到

    2024年01月18日
    浏览(38)
  • 爬虫入门指南(8): 编写天气数据爬虫程序,实现可视化分析

    天气变化是生活中一个重要的因素,了解天气状况可以帮助我们合理安排活动和做出决策。本文介绍了如何使用Python编写一个简单的天气数据爬虫程序,通过爬取指定网站上的天气数据,并使用Matplotlib库对数据进行可视化分析。通过这个例子,我们不仅可以学习Python的相关库

    2024年02月12日
    浏览(46)
  • 【爬虫】2.6 实践项目——爬取天气预报数据

    在中国天气网(天气网)中输入一个城市的名称,例如输入深圳,那么会转到地址深圳天气预报,深圳7天天气预报,深圳15天天气预报,深圳天气查询的网页显示深圳的天气预报,其中101280601是深圳的代码,每个城市或者地区都有一个代码。如下图: 在上图中可以看到,深圳今天,

    2024年02月06日
    浏览(80)
  • python+pyecharts+flask+爬虫实现实时天气查询可视化

    本项目使用python语言编写,采用Flaskweb框架来实现前后端交互,利于开发,维护,前端使用Html和jQuery处理事件,发送数据等,后端采用requests库,BeautifulSoup库实现爬取中国气象局的数据,清洗转化成对应表格数据格式,再使用pyecharts绘制图形,返回给前端页面实现实时展示,

    2024年02月03日
    浏览(47)
  • 【工作记录】基于可视化爬虫spiderflow实战天气数据爬取@20230618

    之前写过一篇关于可视化爬虫spiderflow的文章,介绍了基本语法并实战了某校园新闻数据的爬取。 还有一篇文章介绍了基于docker-compose快速部署spiderflow的过程,需要部署的话可参考该文章。 文章链接如下: 可视化爬虫框架spiderflow入门及实战 【工作记录】基于docker-compose快速部

    2024年02月11日
    浏览(94)
  • LAZADA平台开放接口的接入和参数说明(目前支持以下基本接口:item_get 获得淘宝商品详情item_search 获得淘宝商品详情)

    参数说明 通用参数说明 version:API版本 key:调用key,测试key:test_api_key api_name:API类型[item_get,item_search] cache:[yes,no]默认yes,将调用缓存的数据,速度比较快 result_type:[json,xml,serialize,var_export]返回数据格式,默认为json lang:[cn,en,ru] 翻译语言,默认cn简体中文 API:item_get 参数说明: num_ii

    2023年04月17日
    浏览(51)
  • 【python小知识】你会用爬虫吗?给大家分享几个爬虫小程序,看电影、看书、天气预报、找学校、挖段子、爬微博都可以哦~

    在这篇文章中,我们将分享7个Python爬虫的小案例,帮助大家更好地学习和了解Python爬虫的基础知识。以下是每个案例的简介和源代码: 这个案例使用BeautifulSoup库爬取豆瓣电影Top250的电影名称、评分和评价人数等信息,并将这些信息保存到CSV文件中。 这个案例使用正则表达式

    2024年01月22日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包