基于Python获取城市近7天天气预报


Posted in Python onNovember 26, 2019

这篇文章主要介绍了基于Python获取城市近7天天气预报,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

首先,我们打开中国天气网,找到黄石市近7天天气的网页。

http://www.weather.com.cn/weather/101200601.shtml

基于Python获取城市近7天天气预报

然后按F12开始分析网页结构,找到各个标签,并分析它们的作用。h1:日期;p:天气;tem-span:最高温;tem-i:最低温;win:风;em:风向;win-i:风力。

基于Python获取城市近7天天气预报

接下来,我们需要找到它的用户代理,即User-agent。

基于Python获取城市近7天天气预报

分析的差不多了,我们就开始写代码,下面是我写的全部代码及运行结果:

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()

基于Python获取城市近7天天气预报

在格式输出这方面,我的这份代码还存在着很大的缺陷,把它发出来,欢迎大家跟我一起讨论,改进。

Python 相关文章推荐
python搭建微信公众平台
Feb 09 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
Python实现全排列的打印
Aug 18 Python
Python socket实现的简单通信功能示例
Aug 21 Python
Python实现的各种常见分布算法示例
Dec 13 Python
如何在Python中实现goto语句的方法
May 18 Python
Python 限定函数参数的类型及默认值方式
Dec 24 Python
打包PyQt5应用时的注意事项
Feb 14 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
Python高阶函数与装饰器函数的深入讲解
Nov 10 Python
聊聊基于pytorch实现Resnet对本地数据集的训练问题
Mar 25 Python
NumPy中的维度Axis详解
Nov 26 #Python
python列表推导式操作解析
Nov 26 #Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 #Python
简单了解python数组的基本操作
Nov 26 #Python
python实现图片插入文字
Nov 26 #Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 #Python
python向图片里添加文字
Nov 26 #Python
You might like
快速开发一个PHP扩展图文教程
2008/12/12 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
微信小程序调用微信支付接口的实现方法
2019/04/29 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
2019/10/28 jQuery
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
python实现三次样条插值
2018/12/17 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
2019/08/28 Python
Python列表如何更新值
2020/05/27 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
教师自我鉴定
2013/12/13 职场文书
高中同学聚会邀请函
2014/01/11 职场文书
早读迟到检讨书
2014/01/24 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
励志广播稿300字(5篇)
2014/09/15 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
在Windows下安装配置CPU版的PyTorch的方法
2021/04/02 Python