基于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实现远程调用MetaSploit的方法
Aug 22 Python
Python 字典dict使用介绍
Nov 30 Python
在Python中操作文件之read()方法的使用教程
May 24 Python
Python爬虫DNS解析缓存方法实例分析
Jun 02 Python
Python实现图片尺寸缩放脚本
Mar 10 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
Feb 01 Python
Django 内置权限扩展案例详解
Mar 04 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 Python
Jupyter notebook 不自动弹出网页的解决方案
May 21 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
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
laravel orm 关联条件查询代码
2019/10/21 PHP
brook javascript框架介绍
2011/10/10 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
Extjs根据条件设置表格某行背景色示例
2014/07/23 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
EasyUI的DataGrid绑定Json数据源的示例代码
2017/12/16 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
使用json-server简单完成CRUD模拟后台数据的方法
2018/07/12 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
在vue项目中promise解决回调地狱和并发请求的问题
2020/11/09 Javascript
[03:09]显微镜下的DOTA2第一期——带你走进华丽的DOTA2世界
2014/06/20 DOTA
[23:21]Ti4 冒泡赛第二轮DK vs C9 2
2014/07/14 DOTA
Python中的ceil()方法使用教程
2015/05/14 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
PyQt5 多窗口连接实例
2019/06/19 Python
Python对Tornado请求与响应的数据处理
2020/02/12 Python
python上selenium的弹框操作实现
2020/07/13 Python
英国在线药房:Express Chemist
2019/03/28 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
护理自我鉴定范文
2013/10/06 职场文书
教育课题研究自我鉴定范文
2013/12/28 职场文书
2014年资料员工作总结
2014/11/18 职场文书
世界环境日活动总结
2015/02/11 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
《三国志》赏析
2019/08/27 职场文书
Golang jwt身份认证
2022/04/20 Golang