基于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 相关文章推荐
安装dbus-python的简要教程
May 05 Python
简单总结Python中序列与字典的相同和不同之处
Jan 19 Python
解析Python中的eval()、exec()及其相关函数
Dec 20 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
Python中将变量按行写入txt文本中的方法
Apr 03 Python
《与孩子一起学编程》python自测题
May 27 Python
Python实现自定义函数的5种常见形式分析
Jun 16 Python
python利用Tesseract识别验证码的方法示例
Jan 21 Python
Python根据服务获取端口号的方法
Sep 25 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
python图片合成的示例
Nov 09 Python
Python 类,对象,数据分类,函数参数传递详解
Sep 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实现无限级分类实现代码(递归方法)
2011/01/01 PHP
javascript中直接写php代码的方法
2013/07/31 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
通过sails和阿里大于实现短信验证
2017/01/04 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
vue中动态设置meta标签和title标签的方法
2018/07/11 Javascript
JS在if中的强制类型转换方式
2018/07/15 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
如何在JavaScript中创建具有多个空格的字符串?
2020/02/23 Javascript
Python编码时应该注意的几个情况
2013/03/04 Python
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
Python函数中的函数(闭包)用法实例
2016/03/15 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
padas 生成excel 增加sheet表的实例
2018/12/11 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
video结合canvas实现视频在线截图功能
2018/06/25 HTML / CSS
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
中专生学习生活的自我评价分享
2013/10/27 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
工作时间擅自离岗检讨书
2014/10/24 职场文书
优秀班组申报材料
2014/12/25 职场文书
2016春季运动会通讯稿
2015/07/18 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
初中美术教学反思
2016/02/17 职场文书
人事部:年度述职报告范文
2019/07/12 职场文书