基于Python获取城市近7天天气预报

 更新时间:2019年11月26日 10:15:24   作者:陈康、  
这篇文章主要介绍了基于Python获取城市近7天天气预报,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了基于Python获取城市近7天天气预报,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

首先,我们打开中国天气网,找到黄石市近7天天气的网页。

http://www.weather.com.cn/weather/101200601.shtml

然后按F12开始分析网页结构,找到各个标签,并分析它们的作用。h1:日期;p:天气;tem-span:最高温;tem-i:最低温;win:风;em:风向;win-i:风力。

接下来,我们需要找到它的用户代理,即User-agent。

分析的差不多了,我们就开始写代码,下面是我写的全部代码及运行结果:

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 列表推导和生成器表达式的使用

    python 列表推导和生成器表达式的使用

    这篇文章主要介绍了python 列表推导和生成器表达式的使用方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-02-02
  • Python是编译运行的验证方法

    Python是编译运行的验证方法

    这篇文章主要介绍了Python是编译运行的验证方法,本文讲解了一个小方法来验证Python是编译运行还是解释运行,需要的朋友可以参考下
    2015-01-01
  • Django静态资源URL STATIC_ROOT的配置方法

    Django静态资源URL STATIC_ROOT的配置方法

    这篇文章主要介绍了Django静态资源URL STATIC_ROOT的配置方法,本文给出配置方法和两种使用方法,需要的朋友可以参考下
    2014-11-11
  • Python使用DEAP库实现简单遗传算法

    Python使用DEAP库实现简单遗传算法

    DEAP是一个用于快速原型设计和实验的进化计算框架,它支持多种进化算法,包括遗传算法、遗传编程等,下面我们来看看如何使用DEAP库实现简单遗传算法吧
    2025-01-01
  • Python超简单容易上手的画图工具库推荐

    Python超简单容易上手的画图工具库推荐

    今天小编给大家分享一款很棒的python画图工具库,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-05-05
  • Django  ORM 练习题及答案

    Django ORM 练习题及答案

    这篇文章主要介绍了Django ORM 练习题及答案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python ip正则式

    python ip正则式

    python下的ip正则实现代码。
    2009-05-05
  • 一道python走迷宫算法题

    一道python走迷宫算法题

    这篇文章主要为大家详细介绍了一道python走迷宫算法题,用一个二维数组表示一个简单的迷宫,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • python烟花效果的代码实例

    python烟花效果的代码实例

    在本篇文章里小编给大家整理的是关于python烟花效果的代码实例,对此有兴趣的朋友们可以在跟着学习参考下。
    2020-02-02
  • python+matplotlib演示电偶极子实例代码

    python+matplotlib演示电偶极子实例代码

    这篇文章主要介绍了python+matplotlib演示电偶极子实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论