基于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 05 Python
python daemon守护进程实现
Aug 27 Python
python编程嵌套函数实例代码
Feb 11 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
Python 判断图像是否读取成功的方法
Jan 26 Python
Python+OpenCv制作证件图片生成器的操作方法
Aug 21 Python
Python3 A*寻路算法实现方式
Dec 24 Python
使用python求解二次规划的问题
Feb 29 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
Python类绑定方法及非绑定方法实例解析
Oct 09 Python
OpenCV 图像梯度的实现方法
Jul 25 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中if和or运行效率对比
2014/12/12 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
php+layui数据表格实现数据分页渲染代码
2019/10/26 PHP
javascript引用对象的方法
2007/01/11 Javascript
Javascript中Eval函数的使用
2010/03/23 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
2016/07/19 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
进一步探究Python的装饰器的运用
2015/05/05 Python
python使用pil生成图片验证码的方法
2015/05/08 Python
用Python抢过年的火车票附源码
2015/12/07 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
使用python读取txt文件的内容,并删除重复的行数方法
2018/04/18 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
flask-socketio实现WebSocket的方法
2018/07/31 Python
python学生信息管理系统(完整版)
2020/04/05 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
您的时尚,您的生活方式:DTLR Villa
2019/12/25 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
仪器仪表检测毕业生自荐信
2013/10/31 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
学校搬迁方案
2014/06/15 职场文书
计算机应用专业自荐信
2014/07/05 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
幼儿园教师考核评语
2014/12/31 职场文书
七年级作文之环保作文
2019/10/17 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技
Python的三个重要函数详解
2022/01/18 Python
python解析照片拍摄时间进行图片整理
2022/07/23 Python