基于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 16 Python
自己使用总结Python程序代码片段
Jun 02 Python
Python实现包含min函数的栈
Apr 29 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
Python+selenium实现截图图片并保存截取的图片
Jan 05 Python
用tensorflow搭建CNN的方法
Mar 05 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
python梯度下降法的简单示例
Aug 31 Python
Python从函数参数类型引出元组实例分析
May 28 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
python实现凯撒密码、凯撒加解密算法
Jun 11 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中文本数据翻页(留言本翻页)
2006/10/09 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
使用jQuery管理选择结果
2015/01/20 Javascript
超漂亮的jQuery图片轮播特效
2015/11/24 Javascript
JavaScript File分段上传
2016/03/10 Javascript
js实现多图左右切换功能
2016/08/04 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
angular6的table组件开发的实现示例
2018/12/26 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
在vue中嵌入外部网站的实现
2020/11/13 Javascript
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
python 不关闭控制台的实现方法
2011/10/23 Python
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
Python实现扫描局域网活动ip(扫描在线电脑)
2015/04/28 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
Python中文分词库jieba,pkusegwg性能准确度比较
2020/02/11 Python
python随机模块random使用方法详解
2020/02/14 Python
简单了解python列表和元组的区别
2020/05/14 Python
Python如何实现定时器功能
2020/05/28 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
python 解决Windows平台上路径有空格的问题
2020/11/10 Python
Ref与out有什么不同
2012/11/24 面试题
若通过ObjectOutputStream向一个文件中多次以追加方式写入object,为什么用ObjectInputStream读取这些object时会产生StreamCorruptedException?
2016/10/17 面试题
行政文员岗位职责
2013/11/08 职场文书
开办饭店创业计划书
2013/12/28 职场文书
电子商务自荐书范文
2014/01/04 职场文书
家长对孩子评语
2014/01/30 职场文书
领导干部群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年人事行政工作总结
2014/12/03 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
python使用XPath解析数据爬取起点小说网数据
2021/04/22 Python