用Python获取黄石市近7天天气预报

Posted 我不要你觉得

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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获取黄石市近7天天气预报的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 React Hooks 和 OpenWeatherMap API 获取 5 天天气预报

用JS怎样显示自动获取城市和天气预报

如何获取天气预报的wsdl

如何使用百度天气预报API接口

如何用js调用天气预报代码 最新

求天气预报源代码?