基于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有证书的加密解密实现方法
Nov 19 Python
复习Python中的字符串知识点
Apr 14 Python
python中字典(Dictionary)用法实例详解
May 30 Python
Python中使用装饰器来优化尾递归的示例
Jun 18 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
浅谈Python脚本开头及导包注释自动添加方法
Oct 27 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
python读取txt文件,去掉空格计算每行长度的方法
Dec 20 Python
PyTorch中的Variable变量详解
Jan 07 Python
Python实现Canny及Hough算法代码实例解析
Aug 06 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
详解解决jupyter不能使用pytorch的问题
Feb 18 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
2012/12/30 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
python 实现A*算法的示例代码
2018/08/13 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
Python tkinter三种布局实例详解
2020/01/06 Python
pycharm通过ssh连接远程服务器教程
2020/02/12 Python
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
西部世纪面试题
2014/12/05 面试题
我们的节日国庆活动方案
2014/08/19 职场文书
租房协议书样本
2014/08/20 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
浅析python中特殊文件和特殊函数
2022/02/24 Python
threejs太阳光与阴影效果实例代码
2022/04/05 Javascript