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库。

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

爬虫:python如何获得天气数据相关推荐

  1. Python爬取天气数据及可视化分析!

    来源丨Python之王 Python爬取天气数据及可视化分析 说在前面 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本 ...

  2. Python爬取天气数据及可视化分析

    Python爬取天气数据及可视化分析 文章目录 Python爬取天气数据及可视化分析 说在前面 1.数据获取 请求网站链接 提取有用信息 保存csv文件 2.可视化分析 当天温度变化曲线图 当天相对湿 ...

  3. Python爬虫--爬取历史天气数据

        写在前面:爬虫是老鼠屎在进入实验室后接触的第一个任务,当时刚刚接触代码的老鼠屎一下子迎来了地狱难度的爬微博签到数据.爬了一个多月毫无成果,所幸带我的师兄从未给我疾言厉色,他给与了我最大的包容与 ...

  4. python爬取天气数据山东_Python爬取天气预报数据,并存入到本地EXCEL中-Go语言中文社区...

    近期忙里偷闲,搞了几天python爬虫,基本可以实现常规网络数据的爬取,比如糗事百科.豆瓣影评.NBA数据.股票数据.天气预报等的爬取,整体过程其实比较简单,有一些HTML+CSS+DOM树等知识就很 ...

  5. python爬取天气数据

    说明:寒假任务是做一个带UI界面的天气预报软件,先上最终结果图. 其中用到的知识有:python网络爬虫.python的xlwt和xlwd库的使用,PyQt5的使用. 这里分享一下完成过程: 制作UI ...

  6. Python爬取天气数据及可视化分析(附源码)

    大家好,我是辰哥(文末送书) 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本次使用python中requests和Be ...

  7. Python / Micropython 获取天气数据

    来观察一下这个带参数的网址,注意参数的语法: http://api.openweathermap.org/data/2.5/weather?q=Chengdu,CN&APPID=xxxxxx ...

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

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

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

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

最新文章

  1. 概率和统计的matlab指令
  2. python编程语言是什么-Python是一种什么样的编程语言?解释?编译?汇编?机械?...
  3. Spring源码学习笔记1
  4. opencv计算两数组的乘积_leetcode1464_go_数组中两元素的最大乘积
  5. 频率域滤波matlab函数,频率域滤波(2) - osc_t0xmr011的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. thinkphp用来做什么项目_用蜂蜜做的饮料有哪些?蜂蜜可以用来做什么饮料?
  7. 系统设计知识:系统模块结构设计知识笔记
  8. Hadoop入门(十三)远程提交wordCout程序到hadoop集群
  9. jdk8 cms g1gc_JDK 14:CMS GC是OBE
  10. 1982:【19CSPJ普及组】数字游戏 方法二
  11. python技巧 计算字符串中字母出现的次数并取出最大
  12. 微信分享调用 -- c#篇
  13. python开发环境一般用哪个快递_基于Python的常用快递sdk调用代码实例
  14. kali linux 模板文件夹,详解kali linux 常用文件与指令路径
  15. [NAACL18]What's Going On in Neural Constituency Parsers? An Analysis(神经成分句法分析器的一些分析)...
  16. 一个乞丐的故事(强烈推荐)
  17. iOS 中的编码方式详解(主要讲解Unicode)
  18. 老毛桃U盘快速安装ghost win7系统图文教程
  19. C# 串口测试 ASCII
  20. 《计算机网络——自顶向下方法》学习笔记——网络层:数据平面

热门文章

  1. Mac中的番茄钟Just Focus——保持专注就对了
  2. php kafka使用
  3. STM32复位与时钟、定时器
  4. 【问题解决】ubuntu虚拟机无法识别SD卡报错:prolific USB SD Card Reader 无法连接到理想的主机控制器
  5. ROS 重名问题解决
  6. MySQL 自动故障转移工具--mysqlfailover
  7. 认真学习MySQL中的二进制日志(binlog)与中继日志(Relay log)
  8. Navicat Premium 12并安装
  9. HDMI的HDCP是怎么工作的?
  10. 【译文】如何培养自信的习惯(How to Bulid the Confidence Habit)