基于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连接SQLServer2000的方法详解
Apr 19 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
python读取几个G的csv文件方法
Jan 07 Python
pandas去重复行并分类汇总的实现方法
Jan 29 Python
详解Python 切片语法
Jun 10 Python
python搜索包的路径的实现方法
Jul 19 Python
Python3 chardet模块查看编码格式的例子
Aug 14 Python
numpy:找到指定元素的索引示例
Nov 26 Python
python global和nonlocal用法解析
Feb 03 Python
基于FME使用Python过程图解
May 13 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
python之json文件转xml文件案例讲解
Aug 07 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中return的用法实例分析
2015/02/28 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
看了就知道什么是JSON
2007/12/09 Javascript
基于jQuery的烟花效果(运动相关)点击屏幕出烟花
2012/06/14 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
2014/01/02 Javascript
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
JavaScript计时器示例分析
2015/02/05 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
jQuery文字横向滚动效果的实现代码
2016/05/31 Javascript
JavaScript学习笔记整理_关于表达式和语句
2016/09/19 Javascript
微信小程序 Image API实例详解
2016/09/30 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
简析Python的闭包和装饰器
2016/02/26 Python
Python实现文件复制删除
2016/04/19 Python
Python模块文件结构代码详解
2018/02/03 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
python贪吃蛇游戏代码
2020/04/18 Python
不到20行代码用Python做一个智能聊天机器人
2019/04/19 Python
Django框架实现分页显示内容的方法详解
2019/05/10 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
python实现ping命令小程序
2020/12/28 Python
动物学专业毕业生求职信
2013/10/11 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
创业计划书之宠物店
2019/09/19 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL