基于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中的WSGI接口
May 11 Python
Zabbix实现微信报警功能
Oct 09 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
Django开发的简易留言板案例详解
Dec 04 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
Django 路由控制的实现
Jul 17 Python
使用python代码进行身份证号校验的实现示例
Nov 21 Python
基于Django实现日志记录报错信息
Dec 17 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
Jun 24 Python
django数据模型中null和blank的区别说明
Sep 02 Python
Python实现加密的RAR文件解压的方法(密码已知)
Sep 11 Python
只用20行Python代码实现屏幕录制功能
Jun 02 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提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
php常用数学函数汇总
2014/11/21 PHP
php中ob_flush函数和flush函数用法分析
2015/03/18 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
js计算页面刷新的次数
2009/07/20 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
angular4自定义组件详解
2017/09/28 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
[03:12]完美世界DOTA2联赛PWL DAY9集锦
2020/11/10 DOTA
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
对python For 循环的三种遍历方式解析
2019/02/01 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
奥地利购买珠宝和手表网站:ELLA JUWELEN
2019/09/03 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
研究生毕业论文导师评语
2014/12/31 职场文书
运动会开幕式新闻稿
2015/07/17 职场文书
毕业欢送会致辞
2015/07/29 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android