基于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 第一步 hello world
Sep 25 Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 Python
python3+PyQt5实现柱状图
Apr 24 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
python批量识别图片指定区域文字内容
Apr 30 Python
python+pygame实现坦克大战
Sep 10 Python
python使用 __init__初始化操作简单示例
Sep 26 Python
windows下的pycharm安装及其设置中文菜单
Apr 23 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
Jun 23 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
python Pexpect模块的使用
Dec 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实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
PHP7 echo和print语句实例用法
2019/02/15 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
javascript模拟命名空间
2015/04/17 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
jQuery Validate 校验多个相同name的方法
2017/05/18 jQuery
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
JavaScript实现打印星型金字塔功能实例分析
2017/09/27 Javascript
JavaScript使用百度ECharts插件绘制饼图操作示例
2019/11/26 Javascript
javascript自定义加载loading效果
2020/09/15 Javascript
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
django 实现电子支付功能的示例代码
2018/07/25 Python
python调用百度语音REST API
2018/08/30 Python
Django 内置权限扩展案例详解
2019/03/04 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
python删除某个目录文件夹的方法
2020/05/26 Python
Python手动或自动协程操作方法解析
2020/06/22 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
CSS3 display知识详解
2015/11/25 HTML / CSS
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
Spartoo比利时:欧洲时尚购物网站
2017/12/06 全球购物
实习教师自我鉴定
2013/09/27 职场文书
求职简历自荐信
2013/10/20 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
spring boot中nativeQuery的用法
2021/07/26 Java/Android
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript