基于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 20 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
Python 多进程和数据传递的理解
Oct 09 Python
Python AES加密实例解析
Jan 18 Python
Python3安装pip工具的详细步骤
Oct 14 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
PyCharm下载和安装详细步骤
Dec 17 Python
PyQt5中向单元格添加控件的方法示例
Mar 24 Python
如何在django中实现分页功能
Apr 22 Python
通过Python实现一个简单的html页面
May 16 Python
用python自动生成日历
Apr 24 Python
使用Python的开发框架Brownie部署以太坊智能合约
May 28 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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
php下实现农历日历的代码
2007/03/07 PHP
也谈php网站在线人数统计
2008/04/09 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
php+mysql数据库实现无限分类的方法
2014/12/12 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
jquery自定义插件——window的实现【示例代码】
2016/05/06 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
vue获取data数据改变前后的值方法
2019/11/07 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
js回调函数仿360开机
2019/12/26 Javascript
js验证账户名是否重复
2020/05/26 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
Python socket编程实例详解
2015/05/27 Python
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
python SocketServer源码深入解读
2019/09/17 Python
PageFactory设计模式基于python实现
2020/04/14 Python
记一次django内存异常排查及解决方法
2020/08/07 Python
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
优秀的个人求职信范文
2014/05/09 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
幼儿园感谢信
2015/01/21 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
调解协议书范本
2016/03/21 职场文书
2019年年中工作总结讲话稿模板
2019/03/25 职场文书
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python