基于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 正则式使用心得
May 07 Python
Python批量按比例缩小图片脚本分享
May 21 Python
Python的自动化部署模块Fabric的安装及使用指南
Jan 19 Python
Python基于回溯法子集树模板解决旅行商问题(TSP)实例
Sep 05 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
使用Django启动命令行及执行脚本的方法
May 29 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
基于python实现语音录入识别代码实例
Jan 17 Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 Python
超全Python图像处理讲解(多模块实现)
Apr 13 Python
keras的load_model实现加载含有参数的自定义模型
Jun 22 Python
python中Matplotlib绘制直线的实例代码
Jul 04 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
php 获取页面中指定内容的实现类
2014/01/23 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
深入理解PHP内核(一)
2015/11/10 PHP
实例分析PHP将字符串转换成数字的方法
2019/01/27 PHP
stripos函数知识点实例分享
2019/02/11 PHP
laravel5.6中的外键约束示例
2019/10/23 PHP
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
2014/03/04 Javascript
JavaScript中Boolean对象的属性解析
2015/10/21 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
原生js实现省市区三级联动代码分享
2018/02/12 Javascript
Python读写Redis数据库操作示例
2014/03/18 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
用Pelican搭建一个极简静态博客系统过程解析
2019/08/22 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
python实现图片,视频人脸识别(opencv版)
2020/11/18 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
党员评议个人总结
2014/10/20 职场文书
党建工作汇报材料
2014/12/24 职场文书
天气温馨提示语
2015/07/14 职场文书
HTTP中的Content-type详解
2022/01/18 HTML / CSS
Redis调用Lua脚本及使用场景快速掌握
2022/03/16 Redis
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL