基于Python获取城市近7天天气预报
作者:陈康、 时间:2023-04-02 08:59:35
这篇文章主要介绍了基于Python获取城市近7天天气预报,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
首先,我们打开中国天气网,找到黄石市近7天天气的网页。
http://www.weather.com.cn/weather/101200601.shtml
然后按F12开始分析网页结构,找到各个标签,并分析它们的作用。h1:日期;p:天气;tem-span:最高温;tem-i:最低温;win:风;em:风向;win-i:风力。
接下来,我们需要找到它的用户代理,即User-agent。
分析的差不多了,我们就开始写代码,下面是我写的全部代码及运行结果:
import re
import requests
from bs4 import BeautifulSoup
def get_page(url): #获取URL
try:
headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36'}
r = requests.get(url,headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return '出现异常' #异常处理,防止出现错误
def parse_page(html, weather_list):
soup = BeautifulSoup(html, 'html.parser')
day_list = soup.find('ul', 't clearfix').find_all('li')
for day in day_list:
date = day.find('h1').get_text()
wea = day.find('p', 'wea').get_text()
if day.find('p', 'tem').find('span'): #判断标签'p','tem'下是否有标签'span',以此判断是否有最高温
tem_h = day.find('p', 'tem').find('span').get_text()
else:
tem_h = '' #最高温
tem_l = day.find('p', 'tem').find('i').get_text() #最低温
win1 = re.findall('(?<= title=").*?(?=")', str(day.find('p','win').find('em')))
win2 = '-'.join(win1) #风向,win1-win2
level = day.find('p', 'win').find('i').get_text() #风力
weather_list.append([date, wea, tem_l, tem_h, win2, level])
def print_wea(weather_list):
s = ' \t' * 3
print(s.join(('日期', '天气', '最低温', '最高温', '风向', '风力')))
for i in weather_list:
print(i[0], '\t',i[1],'\t\t\t',i[2],'\t\t\t',i[3],'\t\t',i[4],'\t\t',i[5]) #按格式输出
def main():
url = 'http://www.weather.com.cn/weather/101200601.shtml'
html = get_page(url)
wea_list = []
parse_page(html, wea_list)
print("\t\t\t\t\t\t\t\t\t黄石市近7天天气预报")
print_wea(wea_list)
if __name__ == '__main__':
main()
在格式输出这方面,我的这份代码还存在着很大的缺陷,把它发出来,欢迎大家跟我一起讨论,改进。
来源:https://www.cnblogs.com/Chen-K/p/11922228.html
标签:Python,获取,城市,天气,预报
0
投稿
猜你喜欢
Python Selenium截图功能实现代码
2021-10-11 09:14:19
Python机器学习之决策树
2022-02-24 07:19:01
python利用元类和描述器实现ORM模型的详细步骤
2023-11-13 14:54:12
JavaScript判断变量是对象还是数组的方法
2024-06-24 06:29:37
sqlserver中去除字符串中连续的分隔符的sql语句
2024-01-24 02:45:51
pythonfor循环中range与len区别
2023-06-22 03:17:10
python opencv进行图像拼接
2022-09-10 16:13:01
Django如何实现防止XSS攻击
2022-04-13 10:52:39
CSS绝对定位在宽屏分辨率下错位
2009-07-28 12:24:00
go-micro微服务domain层开发示例详解
2024-04-26 17:25:04
Opencv实现二维直方图的计算及绘制
2023-07-18 23:34:52
详解Python中sorted()和sort()的使用与区别
2022-05-06 17:39:09
Java数据库连接池之c3p0简介_动力节点Java学院整理
2024-01-19 18:16:03
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2023-03-06 19:48:57
Python数据分析之使用matplotlib绘制折线图、柱状图和柱线混合图
2023-09-16 23:18:09
Python常见库matplotlib学习笔记之多个子图绘图
2023-02-17 19:40:14
Python实现批量下载音效素材详解
2021-09-19 02:08:27
js实现九宫格抽奖
2024-04-17 10:34:36
在Python的Flask框架中实现全文搜索功能
2022-12-20 14:38:18
浅析ThinkPHP中的pathinfo模式和URL重写
2024-05-03 15:50:39