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

2 篇文章 5 订阅
订阅专栏

 1.先安装以下库

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

2.爬取数据

2.1 网站的内容

主要是下方的天气情况

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]>时,此刻以与网站连接成功

2.3对网页进行解析

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

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

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

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

 这里有网页里所有的内容。我们需要从这里提取出我们想要的内容。我们回到要爬取的网页,按F12可以在Elements里面看到网页的源码。

   了解过它的结构后,我们可以用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的样子

 以为当天为 2022-08-21,所以当月数据到8月21日就截止了

 3 数据的整理与存储

给每一列附上列名

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

爬取weather的结果显示

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

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

结果如下

 如果数据没有太多要求,此处就可以保存了,在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显示为:结果展示已经相当的漂亮了

 最后就以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爬虫--爬取历史天气数据

2024年Python最新Python爬取天气预报,Ta的城市开始降温了
2401_84584535的博客
05-01 757
还有其他的一些东西,比如说我自己出的Python入门图文类教程,没有电脑的时候用手机也可以学习知识,学会了理论之后再去敲代码实践验证,还有Python中文版的库资料、MySQL和HTML标签大全等等,这些都是可以送给粉丝们的东西。相关模块pip安装即可。
python爬取天气数据并制图分析
12-26
python网络爬虫爬取了2018年截至到目前为止,北上广深这四个城市的空气质量的数据,并对此做出了分析,用python画图库,实现数据的可视化
一个简单Python 代码 爬取天气信息
01-09
Python 天气 爬虫 一个简单Python 代码 爬取天气信息 搬运工
基于python的网络爬虫爬取天气数据及可视化分析python大作业,课程设计报告
06-13
基于python的网络爬虫爬取天气数据及可视化分析 python程序设计报告 源代码+csv文件+设计报告 python期末简单大作业(自己写的,重复率低) 利用python爬取了网站上的城市天气,并用利用可视化展示,有参考文献有目录
基于python的网络爬虫爬取天气数据及可视化分析(Matplotlib、sk-learn等,包括ppt,视频)
chen_5213的博客
12-21 1万+
本文旨在利用Python编程语言实现天气数据信息的爬取和可视化分析。Python作为一种简单易学且功能强大的编程语言,被广泛应用于数据处理和分析领域。通过使用Python,我们可以方便地进行网页爬取数据处理。详细介绍了如何使用Python编写网络爬虫程序来获取天气数据
python抓取天气并分析 实例源码
08-28
Python代码抓取获取天气预报信息源码讲解。这是一个用Python编写抓取天气预报的代码示例,用python天气查询软件程序很简单。这段代码可以获取当地的天气和、任意城市的天气预报,原理是根据url找到网站截取相应的数据展现。 python抓取广州天气并分析 实例源码
Pythonpython天气数据抓取与数据分析(源码+论文)【独一无二】
热门推荐
测试开发自动化
11-28 1万+
本项目包括四个核心部分:数据爬取数据存储、数据分析和数据可视化。首先,利用Python编写的网络爬虫从专业的历史天气网站上爬取大连市从2011年至2023年的天气数据,包括日期、最高气温、最低气温和天气状况等信息。爬取过程中应用了requests库来模拟浏览器请求和lxml库来解析HTML文档,确保了数据的准确性和完整性。接着,将爬取到的数据存储在两个CSV文件中,并利用pymysql库将数据导入MySQL数据库,便于后续的数据处理和分析。在数据分析阶段,使用pandas库对CSV中的数据进行读取和处理,
1.天气预报数据爬取
qq_53897534的博客
06-30 1337
然后通过读取保存的csv文件的内容,通过气象站码获取返回的html文件,使用BeautifulSoup来进行解析,并将得到的结果保存csv文件,随后读取csv文件,将结果存储进mysql中,使用定时调度来进行定时执行。对于历史数据爬取,由于上面的网站并没有提供历史数据,因此爬取的是另外的网站的数据,使用的也是selenium来开启多进程爬取,由于爬取速度太慢,并且年限太多,可以根据自己的需要去更改。首先需要通过接口返回的数据得到各个城市的气象站码,并保存csv文件。
学了那么久Python还什么都做不了,我觉得你该试试这个方法了
龙叔的博客
11-08 1万+
答应我,别再做无用功了
python爬虫爬取网页上的天气数据
m0_56051805的博客
12-24 2888
python爬虫爬取网页上的天气数据
Python每天定时爬取中国天气网,并对数据进行简单的可视化处理,并部署在服务器上
zhang_qing_yun的博客
05-03 1万+
python 爬虫 中国天气数据分析 服务器
天气后报网爬虫数据分析(python
12-26
(1)将获取的数据信息存储到“data.csv”文件中,每行数据格式为“日期,最高温,最低温,天气,风向”; (2)在data.csv文件中增加“平均温度”一列,其中:平均温度=(最高温+最低温)/2; (3)统计并输出...
python天气数据爬取
04-26
基于python爬取南昌十年 以来的天气数据,比采用数据可视化对十年来每天的最低最高气温实行动态显示
python爬取天气数据的实例详解
01-19
那么,我们能不能用python中的方法做一个天气数据分析的图形,帮助我们更直接的看出天气变化呢? 使用pygal绘图,使用该模块前需先安装pip install pygal,然后导入import pygal bar = pygal.Line() # 创建折线图 ...
基于python天气爬虫源码
09-05
# python天气爬虫 #### 项目介绍 Python编写的天气爬虫,获取未来五天天气情况,数据来源www.ip138.com/ <img src="./img/show.gif" width="100%" height="519px"/> ![主页](img/PY.png "主页") ![结果](img/res....
python爬取天气数据
12-22
第二步:用python的urllib2库爬取对应城市的天气数据。 第三步:打印天气数据 有了思路,开始打代码: import urllib.request import gzip import json def get_weather_data() : city_name = input('请输入要查询的...
基于Python的网络爬虫爬取天气数据可视化分析
毕业作品网站
09-04 1万+
(3)网页解析器:网页解析器解析传递的字符串,解析器不仅可以解析出需要爬取数据,而且还可以解析出每一个网页只想其他网页的URL,这些URL被解析出来会补充进URL管理器。(1)URL管理器:对需要爬取的URL和已经爬取过的URL进行管理,可以从URL管理器中取出一个带爬取的URL,传递给网页下载器。(2)网页下载器:网页下载器将URL指定的网页下载下来,存储成一个字符串,传递给网页解析器。2.爬虫模块:包含三个小模块,URL管理器,网页下载器,网页解析器。请求资源的内容,如网页源代码,二进制数据等。
如何用python爬取天气预报,python爬虫爬取天气数据
最新发布
yang0728y的博客
01-25 4839
大家好,本文将围绕python爬虫爬取天气数据讲解展开说明,如何用python爬取天气预报是一个很多人都想弄明白的事情,想搞清楚python爬虫爬取天气数据需要先了解以下几个事情。天气预报我们每天都会关注,我们可以根据未来的天气增减衣物、安排出行,每天的气温、风速风向、相对湿度、空气质量等成为关注的焦点。
如何用python爬取天气预报,python爬虫爬取天气预报
神经网络爱好者
12-12 802
大家好,小编来为大家解答以下问题,python爬虫爬取天气数据讲解,python爬取天气数据生成窗口,今天让我们一起来看看吧!目的:从天气网站中爬取数据,生成excel表格,里面存储南昌市近十一年的天气情况,并对爬取产生的数据进行数据分析。首先,导入 requests 模块,并调用函数 requests.get(),从天气的网站上面获。其次,使用 pandas.concat().to_excel 函数,将爬取的结果保存到表格中,并。取该函数所需要的各种参数,然后对里面的参数进行相应的赋值。
python爬虫爬取天气数据
06-09
使用 Python 爬虫爬取天气数据可以通过以下步骤实现: 1. 导入需要的库:requests、beautifulsoup4。 2. 使用 requests 发送请求获取网页源代码。 3. 使用 beautifulsoup4 解析网页源代码,提取所需的数据。 4. 对所需数据进行处理和清洗。 5. 将数据保存到本地或者数据库中。 以下是一个简单的示例代码: ```python import requests from bs4 import BeautifulSoup url = 'http://www.weather.com.cn/weather/101010100.shtml' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') # 获取天气信息 weather = soup.find('p', class_='wea').text temperature = soup.find('p', class_='tem').span.text # 输出天气信息 print('天气:', weather) print('温度:', temperature) ``` 需要注意的是,在爬取网页数据时需要注意网站的爬虫协议,遵守网站的规定,不要过度频繁地访问网站,以免被封 IP。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 爬虫:python如何获得天气数据 14526
  • 安装mxnet遇到巨多出错爆红时,分布解决你的需求 1401
  • 爬取近十年来的天气数据 1239
  • 动态条形图展示人均GDP,最后以gif格式输出 1093

分类专栏

  • 爬虫 2篇
  • 大数据技术 1篇
  • 数据可视化 1篇

最新评论

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

    m0_63425347: 想把网址那边代表月份的序号改成变量,但是一改底下那个遍历历史记录的那个find_all就会报错,真的一头雾水表情包哥有办法了务必踹我一脚

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

    -莫小狼-: 大佬,如果想爬取比如2021到2023年的数据改怎么改呢

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

    笙牧899: 请问博主没和网站连接上怎么办,没有显示出现<Response[200]>,而且结果为“进程已结束,退出代码为 0”

  • 爬取近十年来的天气数据

    梦回逍遥津: AttributeError: 'NoneType' object has no attribute 'find_all'

  • 爬取近十年来的天气数据

    m0_73522166: 请问'NoneType' object has no attribute 'find_all'报错了怎么修改啊

大家在看

  • 隐语课程学习笔记7- SGB、SS-XGB算法原理及编程实战 3
  • 看完这份AI全栈科普资料,让你立赚百万!
  • 你是否感受到AI就在身边?
  • 如何高效使用大型语言模型 LLMs 初学者版本 简单易上手 554
  • python对.xlsx文件进行操作

最新文章

  • 安装mxnet遇到巨多出错爆红时,分布解决你的需求
  • 动态条形图展示人均GDP,最后以gif格式输出
  • 爬取近十年来的天气数据
2023年1篇
2022年3篇

目录

目录

评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

聚圣源东京奥运会有多少个国家参加名典免费起名字测名网门头起名几个字吉利兔侠传奇周易免费起名测试打分结果顾西刑北岩小说免费阅读陶白白是什么梗孔守法楚枫修罗武神全文免费阅读工作服店铺起名免费起名八字国际范的婚庆公司起名字周易起名网免费取名大节日快乐猪小儿起名宜忌用字网络用语54000是什么意思4画属木的吉祥字起名字用广字辈男宝起名贪嗔痴诸夏asshole百依百顺的意思新华网评5天走失58名儿童德能勤绩廉个人总结雷切尔·珀查起名古文马赛克画李姓的小孩起名字门店起名网免费取名字公主贵性淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化