Python使用免费天气API,获取全球任意地区的天气情况

2023-11-02

需求背景:

公司是做外贸服装的,在亚马逊平台上有多个地区店铺运营,运营人员需要参考地区的天气情况,上新的服装.所以需要能够获取全球任意地区的天气情况.还需要预测未来10-15天的天气情况.

选型API:

天气API中有大把免费的api,如:国内的心知天气,国际的雅虎,还有今天的主角:wunderground

最终选择了wunderground,原因:1,需求是全球任意地区的(国内API请求国外地区需要收费才能访问), 2.wunderground提供是信息最全,最丰富的天气api.雅虎提供的天气API信息非常之简略.


直入主题:

官方API文档

这里的免费api只是说测试账号每天有500次的免费请求,要是公司需求大的话,那么就需要付费了.官网价格

准备工作,你需要在官网注册一个账号,然后随意打开一个API的文档, 你会见到

http://api.wunderground.com/api/Your_Key/conditions/q/CA/San_Francisco.json

当中Your_Key的位置有一串key.请保管记住.


python代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 18年3月6日 下午1:53
# @Author  : dongyouyuan
# @email   : 15099977712@163.com
# @File    : weatherApi.py
# @Software: PyCharm
#
# 通过全球天气预报API:http://api.wunderground.com(信息最多最全) 来获取信息

import requests
import json
import datetime
import time
import operator


def timeStamp_to_dataTime(timestamp, format='%Y-%m-%d'):
    """
    时间戳转换成格式化的时间
    :param timestamp: 时间戳
    :param format: 格式
    :return:
    """
    if timestamp is None or not timestamp:
            return ''
    return datetime.datetime.fromtimestamp(int(timestamp)).strftime(format)


def dataTime_to_timeStamp(data_tiem, format='%Y-%m-%d %H:%M'):
    """
    格式化时间格式转换成时间戳
    :param data_tiem: 格式化时间
    :param format: 格式
    :return:
    """
    if not data_tiem:
        return 0
    else:
        try:
            time_array = time.strptime(data_tiem, format)
            time_stamp = int(time.mktime(time_array))
            return time_stamp
        except Exception as error_msg:
            print(error_msg)
            return 0


def get_recent_10_days(date):
    """
    获取前10天的时间格式 20180306
    :return: 返回列表
    """

    date_list = list()
    for i in range(1, 11):
        tmp_date = (datetime.datetime.strptime(date, "%Y%m%d") - datetime.timedelta(days=i)).strftime('%Y%m%d')
        date_list.append(tmp_date)
    return date_list


def sorted_for_list_dict(list_dict, key, reverse=False):
    """
    为列表排序,按照元素中dict的key
    :param list_dict:
    :param key:
    :return:
    """
    return sorted(list_dict, key=operator.itemgetter(key), reverse=reverse)


class Weather(object):
    def __init__(self):
        self.search_url = 'http://autocomplete.wunderground.com/aq'
        self._url = 'http://api.wunderground.com/api/'
        self._key = ''  # Your_ key
        self.url = self._url + self._key + '/'
        self.timeout = 10

    def search(self, query):
        """
        搜索地名,返回结果列表
        :param query:
        :return:
        """
        params = {"query": query}
        headers = {"Content-Type": "application/json"}
        r = requests.get(url=self.search_url, params=params, headers=headers, timeout=self.timeout)
        if r.status_code == 200:
            return r.json().get('RESULTS', None)
        else:
            print('请求失败,失败代码:{}'.format(r.status_code))
            return None

    def get_today(self, zmw):
        """
        根据zmw码获取今天的天气信息
        :param zmw:
        :return:
        """
        # temp 温度
        # humidity 湿度
        # weather 天气情况
        # wind 风
        # dewpoint 露点
        # UV 紫外线强度
        # pressure 压力

        url = self.url + 'conditions' + '/q/zmw:{}.json'.format(zmw)

        headers = {"Content-Type": "application/json"}
        r = requests.get(url=url, headers=headers, timeout=self.timeout)
        if r.status_code == 200:
            # print(r.json())
            return r.json().get('current_observation')
        else:
            print('请求失败,失败代码:{}'.format(r.status_code))
            return None

    def get_hourly_today(self, zmw):
        """
        根据zmw码获取今天每小时的天气信息
        :param zmw:
        :return:
        """
        url = self.url + 'hourly' + '/q/zmw:{}.json'.format(zmw)

        headers = {"Content-Type": "application/json"}
        r = requests.get(url=url, headers=headers, timeout=self.timeout)
        if r.status_code == 200:
            # print(r.json())
            return r.json().get('hourly_forecast')
        else:
            print('请求失败,失败代码:{}'.format(r.status_code))
            return None

    def _get_forecast_10day(self, zmw):
        """
        根据zmw码获取未来10天的天气预报
        :param zmw:
        :return:
        """
        # snow 降雪 (白天,晚上,全天)
        # wind 风 (最大,最小)
        # humidity 湿度(最大,最小,平均)
        # conditions 天气情况 icon icon_url
        # qpf 降水量(白天,晚上,全天)
        # low, high 温度(最高,最低)
        # pop 降水概率

        url = self.url + 'forecast10day' + '/q/zmw:{}.json'.format(zmw)
        headers = {"Content-Type": "application/json"}
        r = requests.get(url=url, headers=headers, timeout=self.timeout)
        if r.status_code == 200:
            return sorted_for_list_dict(r.json().get('forecast').get('simpleforecast').get('forecastday'), 'period')
        else:
            print('请求失败,失败代码:{}'.format(r.status_code))
            return None

    def get_forecast_10day(self, zmw):
        """
        根据zmw码获取未来10天的天气预报(并且整理数据输出)
        :param zmw:
        :return:
        """
        f_day_list = self._get_forecast_10day(zmw)
        if f_day_list:
            result_list = list()
            for f_day in f_day_list:
                forecast_day = dict()
                date_time = "{}{}{}".format(f_day['date']['year'], f_day['date']['month'], f_day['date']['day'])

                time_stamp = dataTime_to_timeStamp(date_time, format='%Y%m%d')
                date_format = timeStamp_to_dataTime(time_stamp, format='%Y%m%d')
                # 当天日期
                forecast_day['date_format'] = date_format

                # 风
                wind = {
                    'ave': f_day.get('avewind', {}),
                    'max': f_day.get('maxwind', {})
                }
                forecast_day['wind'] = wind

                # 雪
                snow = {
                    'day': f_day.get('snow_day', {}),
                    'night': f_day.get('snow_night', {}),
                    'allday': f_day.get('snow_allday', {})
                }
                forecast_day['snow'] = snow

                # 湿度
                humidity = {
                    'min': f_day.get('minhumidity', 0),
                    'max': f_day.get('maxhumidity', 0),
                    'ave': f_day.get('avehumidity', 0)
                }
                forecast_day['humidity'] = humidity

                # 天气情况
                conditions = {
                    'icon_url': f_day.get('icon_url', ''),
                    'icon': f_day.get('icon', ''),
                    'text': f_day.get('conditions', ''),
                    'skyicon': f_day.get('skyicon', '')
                }
                forecast_day['conditions'] = conditions

                # 气压
                qpf = {
                    'day': f_day['qpf_day'],
                    'night': f_day['qpf_night'],
                    'allday': f_day['qpf_allday']
                }
                forecast_day['qpf'] = qpf

                # 气温
                temp = {
                    'low': f_day.get('low', {'celsius': '0', 'fahrenheit': '0'}),
                    'high': f_day.get('high', {'celsius': '0', 'fahrenheit': '0'})
                }
                forecast_day['temp'] = temp
                forecast_day['pop'] = f_day.get('pop', 0)
                forecast_day['date'] = f_day.get('date', {})
                result_list.append(forecast_day)
            return result_list
        else:
            return None

    def get_hourly_10day(self, zmw):
        """
        根据zmw码获取未来10天,每小时的天气预报
        :param zmw:
        :return:
        """
        url = self.url + 'hourly10day' + '/q/zmw:{}.json'.format(zmw)
        headers = {"Content-Type": "application/json"}
        r = requests.get(url=url, headers=headers, timeout=self.timeout)
        if r.status_code == 200:
            # print(r.json())
            return r.json()
        else:
            print('请求失败,失败代码:{}'.format(r.status_code))
            return None

    def _get_history(self, zmw, date):
        """
        根据zmw码获取历史天气
        :param zmw:
        :param dates: 查询时间 20170608
        :return:
        """

        url = self.url + 'history_{}'.format(date) + '/q/zmw:{}.json'.format(zmw)
        headers = {"Content-Type": "application/json"}
        r = requests.get(url=url, headers=headers, timeout=self.timeout)
        if r.status_code == 200:
            # print(r.json())
            return r.json()
        else:
            print('请求失败,失败代码:{}'.format(r.status_code))
            return None

    def get_history(self, zmw, date):
        """
        根据zmw码获取历史天气(并且整理数据输出)
        :param zmw:
        :param dates: 查询时间 20170608
        :return:
        """
        h_day = self._get_history(zmw, date)
        if h_day['history']['dailysummary']:
            h_day = h_day['history']['dailysummary'][0]
            history_day = dict()
            # 当天日期
            history_day['date_format'] = date

            # 风
            wind = {
                'ave': {'dir': h_day.get('meanwdire', ''), 'degrees': h_day.get('meanwdird', ''),
                        'kph': h_day.get('meanwindspdi', ''), 'mph': h_day.get('meanwindspdm', '')},
                'max': {'dir': '', 'degrees': '0', 'kph': '0', 'mph': '0'}
            }
            history_day['wind'] = wind

            # 雪
            snow = {
                'day': {'cm': h_day.get('snowdepthm', ''), 'in': h_day.get('snowdepthi', '')},
                'night': {'cm': '', 'in': ''},
                'allday': {'cm': '', 'in': ''}
            }
            history_day['snow'] = snow

            # 湿度
            humidity = {
                'min': h_day.get('minhumidity', ''),
                'max': h_day.get('maxhumidity', ''),
                'ave': h_day.get('humidity', '')
            }
            history_day['humidity'] = humidity

            # 天气情况
            conditions = {
                'icon_url': '',
                'icon': '',
                'text': '',
                'skyicon': '',

                'tornado': h_day.get('tornado', '0'),
                'fog': h_day.get('fog', '0'),
                'rain': h_day.get('rain', '0'),
                'snow': h_day.get('snow', '0'),
                'thunder': h_day.get('thunder', '0')
            }
            history_day['conditions'] = conditions

            # 气压
            qpf = {
                'day': {'mm': h_day.get('maxpressurem', '0.0'), 'in': h_day.get('maxpressurei', '0.0')},
                'night': {'mm': h_day.get('minpressurem', '0.0'), 'in': h_day.get('minpressurei', '0.0')},
                'allday': {'mm': h_day.get('meanpressurem', '0.0'), 'in': h_day.get('meanpressurei', '0.0')}
            }
            history_day['qpf'] = qpf

            # 温度
            temp = {
                'low': {'celsius': h_day.get('mintempm', '0'), 'fahrenheit': h_day.get('mintempi', '0')},
                'high': {'celsius': h_day.get('maxtempm', '0'), 'fahrenheit': h_day.get('maxtempi', '0')}
            }
            history_day['temp'] = temp

            # 可见度
            visi = {
                'min': {'km': h_day.get('minvism', '0.0'), 'mi': h_day.get('minvisi', '0.0')},
                'mean': {'km': h_day.get('meanvism', '0.0'), 'mi': h_day.get('meanvisi', '0.0')},
                'max': {'km': h_day.get('maxvism', '0.0'), 'mi': h_day.get('maxvisi', '0.0')}
            }
            history_day['visi'] = visi

            # 时间信息
            history_day['date'] = h_day.get('date', {})
            return history_day
        else:
            return None

    def _get_history_10day(self, zmw, date):
        """
        根据zmw码获取10天的历史天气(不包括传入天)
        :param zmw:
        :param dates: 查询时间 20170608
        :return:
        """
        date_list = get_recent_10_days(date)
        result_list = list()
        for history_date in date_list:
            result_list.append(self._get_history(zmw=zmw, date=history_date))
        return result_list

    def get_history_10day(self, zmw, date):
        """
        根据zmw码获取10天的历史天气(不包括传入天)(并且整理输出)
        :param zmw:
        :param dates: 查询时间 20170608
        :return:
        """
        date_list = get_recent_10_days(date)
        result_list = list()
        for history_date in date_list:
            result_list.append(self.get_history(zmw=zmw, date=history_date))
        return result_list


if __name__ == '__main__':
    weather = Weather()
    search_result = weather.search('Paris')
    if search_result:
        zmw = search_result[0].get('zmw')
        if zmw:
            print('*'*100)
            # 获取未来10天的天气预告
            f_10daty = weather.get_forecast_10day(zmw=zmw)
            print(json.dumps(f_10daty, indent=4))
            print(len(f_10daty))

            # 获取某一天的历史天气
            # h_10daty = weather.get_history(zmw=zmw, date='20180306')
            # print(json.dumps(h_10daty, indent=4))
            # print(json.dumps(h_10daty, indent=4))
            # print(len(h_10daty))

            # 获取某天前10天的历史天气(不包括传入天)
            h_10daty = weather.get_history_10day(zmw=zmw, date='20180306')
            print(json.dumps(h_10daty, indent=4))
            print(len(h_10daty))


代码当中封装了Weather类,你需要把刚才注册得到的key放到类的key中去.

代码解析:

类中并没有按照官网API(/q/地区/地名.json)的方法去做,因为发现这样得出的结果往往不准确的.而是通过查询你需要的字符,你自己获得到zmw(这是个唯一的编码)

然后再通过此码去查询.然后在方法 get_forecast_10day(),get_history(), get_history_10day()封装了一下,原因是官网的不同api获取的天气信息所叫的名称不一样(变量名)

这样用起来有点麻烦,所以统一整理,封装了一下.


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python使用免费天气API,获取全球任意地区的天气情况 的相关文章

  • API 端点的 Django 子域配置

    我已经建立了一个 Django 项目 它使用django rest framework提供一些 ReST 功能 网站和其他功能都运行良好 然而有一个小问题 我需要我的 API 端点指向一个不同的子域 例如 当用户访问该网站时 他 她可以根据
  • PyList_SetItem 与 PyList_SETITEM

    据我所知 PyList SetItem 和 PyList SETITEM 之间的区别在于 PyList SetItem 会降低它覆盖的列表项的引用计数 而 PyList SETITEM 不会 我有什么理由不应该一直使用 PyList Set
  • 具有多处理功能的 Python 代码无法在 Windows 上运行

    以下简单的绝对初学者代码在 Ubuntu 14 04 Python 2 7 6 和 Cygwin Python 2 7 8 上运行 100 但在 Windows 64 位 Python 2 7 8 上挂起 我使用另一个片段观察到了同样的情况
  • Python 中的安全解除引用

    Groovy 有一个很好的安全取消引用运算符 这有助于避免 NullPointerExceptions variable method The method仅当以下情况时才会被调用variable is not null 有没有办法在 Py
  • Python + PostgreSQL + 奇怪的ascii = UTF8编码错误

    我有包含字符的 ascii 字符串 x80 代表欧元符号 gt gt gt print x80 当将包含该字符的字符串数据插入数据库时 我得到 psycopg2 DataError invalid byte sequence for enc
  • Python sqlite3游标没有属性commit

    当我运行这段代码时 path Scripts wallpapers single png conn sqlite3 connect Users Heaven Library Application Support Dock desktopp
  • 如何在 ReportLab 段落中插入回车符?

    有没有办法在 ReportLab 的段落中插入回车符 我试图将 n 连接到我的段落字符串 但这不起作用 Title Paragraph Title n Page myStyle 我想要这样做 因为我将名称放入单元格中 并且想要控制单元格中的
  • 如何使用循环将十进制转换为二进制?

    我想编写一个程序 将十进制数 0 到 9 转换为二进制数 我可以编写如何使用重复除法将十进制数转换为二进制数的代码 但是 我在创建一个以二进制格式打印十进制数字 0 到 9 的循环时遇到了麻烦 这是我的代码 number 0 remaind
  • 为 Networkx 图添加标题?

    我希望我的代码创建一个带有标题的图 使用下面的代码 可以创建绘图 但没有标题 有人可以告诉我我做错了什么吗 import pandas as pd import networkx as nx from networkx algorithms
  • RuntimeError: 预期所有张量都在同一设备上,但发​​现至少有两个设备,cpu 和 cuda:0!使用我的模型进行预测时

    我使用变压器训练了一个序列分类模型 BertForSequenceClassification 我收到错误 预计所有张量都在同一设备上 但发 现至少有两个设备 cpu 和 cuda 0 在方法wrapper index select中检查参
  • Python 视频框架

    我正在寻找一个 Python 框架 它将使我能够播放视频并在该视频上绘图 用于标记目的 我尝试过 Pyglet 但这似乎效果不是特别好 在现有视频上绘图时 会出现闪烁 即使使用双缓冲和所有这些好东西 而且似乎没有办法在每帧回调期间获取视频中
  • pip 安装软件包两次

    不幸的是我无法重现它 但我们已经见过几次了 pip 将一个软件包安装两次 如果卸载第一个 第二个就会可见并且也可以被卸载 我的问题 如果一个包安装了两次 如何用 python 检查 背景 我想编写一个测试来检查这一点 devOp Updat
  • 一起使用 Flask 和 Tornado?

    我是以下的忠实粉丝Flask 部分是因为它很简单 部分是因为它有很多扩展 http flask pocoo org extensions 然而 Flask 是为了在 WSGI 环境中使用而设计的 而 WSGI 不是非阻塞的 所以 我相信 它
  • 为什么“return self”返回 None ? [复制]

    这个问题在这里已经有答案了 我正在尝试获取链的顶部节点getTopParent 当我打印出来时self name 它确实打印出了父实例的名称 然而 当我回来时self 它返回 None 为什么是这样 class A def init sel
  • smooth_idf 是多余的吗?

    The scikit learn 文档 http scikit learn org stable modules generated sklearn feature extraction text TfidfTransformer html
  • 如何在C++中列出Python模块的所有函数名称?

    我有一个 C 程序 我想导入一个 Python 模块并列出该模块中的所有函数名称 我该怎么做 我使用以下代码从模块中获取字典 PyDictObject pDict PyDictObject PyModule GetDict pModule
  • 如何向 SCons 构建添加预处理和后处理操作?

    我正在尝试在使用 SCons 构建项目时添加预处理和后处理操作 SConstruct 和 SConscript 文件位于项目的顶部 预处理动作 生成代码 通过调用不同的工具 gt 不知道在此预处理之后将生成的确切文件 可以创建用于决定生成哪
  • SQLAlchemy:避免声明式样式类定义中的重复

    我正在使用 SQLAlchemy 并且我的对象模型中的许多类具有相同的两个属性 id 和 整数和主键 以及名称 字符串 我试图避免在每个类中声明它们 如下所示 class C1 declarative base id Column Inte
  • 如何使用Featuretools按列值从单个数据框中的多个列创建特征?

    我正在尝试根据之前的结果来预测足球比赛的结果 我在 Windows 上运行 Python 3 6 并使用 Featuretools 0 4 1 假设我有以下代表结果历史记录的数据框 原始数据框 https i stack imgur com
  • 在Python 3.2中,我可以使用http.client打开并读取HTTPS网页,但urllib.request无法打开同一页面

    我想打开并阅读https yande re https yande re with urllib request 但我收到 SSL 错误 我可以使用以下方式打开并阅读页面http client用这个代码 import http client

随机推荐

  • 拳王虚拟项目公社:闲鱼最强的实操赚钱方法,你一定不知道!

    闲鱼 很多人都很喜欢的一个二手交易平台 也很多人喜欢在这个平台上赚钱 于是乎就不断的找各种方法 教程 在拳王公ZH的后台每天都会有朋友搜索免费的闲鱼资源 所以拳王不得不为这些朋友们着想一下 拳王今天就满足大众的需求 写一篇自己总结实操过的干
  • python统计单词个数

    统计句子单词个数 mydict for i in input 英文句子 split if i in mydict mydict i 1 else mydict i 1 for key value in mydict items print
  • 推荐 7 月份 yyds 的开源项目

    本期推荐开源项目目录 1 Notion 的开源替代方案 2 Flutter 富文本编辑器 3 所有 Demo 的妈 4 30秒的代码 5 面向程序员的全栈资源集 6 基于项目的学习 7 开源管理系统 01 Notion 的开源替代方案 Ap
  • axios token失效刷新token怎么重新请求_Token 刷新并发处理解决方案

    对 Token 进行刷新续期 我们要解决并发请求导致重复刷新 Token 的问题 这也是设计刷新 Token 的难点 这里我会分别介绍前端和后端各自的处理方案 后端方案 利用 Redis 缓存 当同时发起多个请求时 第一个接口刷新了 Tok
  • anaconda spyder使用技巧

    spyder 很简单的python代码编辑器 目录 界面布局 快捷键 设置语言 设置默认打开文件夹 高级技巧 调试代码 高级技巧 创建spyder虚拟环境 恢复默认布局 英语阅读难的话 可以先跳到设置语言 界面布局 选项卡 file 文件
  • k8s生产环境容器内部JVM参数配置解析及优化

    试问 我们为什么要做jvm参数配置优化 避免默认条件或者复杂情况导致频繁STW或者OOM 1 堆总内存初始化大小分配和最大值分配 Xms512m Xmx512m 设置为FullGC之后的老年代内存占用的3 4倍 线下调试 1 初始分配的堆内
  • 华为OD机试真题-服务中心的最佳位置【2023Q2】【JAVA、Python、C++】

    题目描述 一家快递公司希望在一条街道建立新的服务中心 公司统计了该街道中所有区域在地图上的位置 并希望能够以此为依据为新的服务中心选址 使服务中心 到所有区域的距离的总和最小 给你一个数组 positions 其中 positions i
  • 【#ifndef, #define, 和 #endif】

    前言 学习AFNetWoring源码的时候 在AFN的h借接口文件又看到了这几个宏定义 学习记录一下 作用 ifndef define 和 endif是C CPP的预处理指令 常常用来条件编译和防止头文件重复包含 简介 ifndef 它是i
  • rpm安装postgresql12

    安装环境 CentOS Linux release 7 3 1611 Core 安装pg版本 postgresql12 安装步骤 文件下载地址 postgresql12 docker19 postgis Linux文档类资源 CSDN下载
  • 2021-09-09

    将100 200之间的素数输出 谭浩强 C程序设计 第四版 第二章习题第四题的六小题代码实现 将100 200之间的素输出 include
  • CSDN获取积分办法

    下载积分攻略 1 个人设置里进行手机绑定CSDN账户 奖励50分 右上角设置 账户安全 手机绑定 2 完成任务送若干分积分 CSDN有奖任务 3 上传有效资源获取积分 上传非法 广告资源用户 将被扣除一定积分 严重者封号 上传自己设分资源被
  • 华为云云耀云服务器L实例评测| ultralytics最先进模型YOLOv8深度学习AI训练

    目录 前言 登录服务器 安装pyhton 部署yolov8 安装Pytorch 下载权重文件 训练模型 模型使用 前言 前几期我们在云耀云服务器L实例上分别使用docker和直接在centos上部署了yolov5识别API 前端项目vue
  • 方法的定义和格式

    方法 什么是方法 方法是程序中最小的执行单元 定义 把一些代码打包在一起 该过程称为方法 实际开发过程中 什么时候用到方法 重复的代码 具有独立功能的代码可以抽取到方法中 实际开发中 方法的好处 提高代码的复用性 提高代码的可维护性 方法的
  • C++内存泄漏和内存碎片的产生及避免策略

    1 内存泄漏的定义 一般我们常说的内存泄漏是指堆内存的泄漏 堆内存是指程序从堆中分配的 大小任意的 内存块的大小可以在程序运行期决定 使用完后必须显示释放的内存 应用程序一般使用malloc realloc new等函数从堆中分配到一块内存
  • AirTest自动化测试

    目录 一 AirTest简介 二 AirTest与模拟器进行连接 三 图像库 touch 运行 报告 一 AirTest简介 AirTest是一个基于图像识别原理的跨平台UI自动化测试框架 适用于游戏和应用程序 1 特点 a 跨平台 Air
  • windows10(1903) VMware(虚拟机)不能正常安装操作系统

    win10虚拟机不能正常安装操作系统 前言 一 问题现象 二 解决方案 1 停止hv主机服务 2 重启计算机 3 开启虚拟机的全局虚拟打印功能 4 正常工作了 参考 前言 最近公司搬家 重新搭环境 事儿有点多哈 我们win10 操作系统被运
  • vue-router基本使用方法

    声明 本人的所有博客皆为个人笔记 作为个人知识索引使用 因此在叙述上存在逻辑不通顺 跨度大等问题 希望理解 分享出来仅供大家学习翻阅 若有错误希望指出 感谢 动态路由匹配 我们可以在 vue router 的路由路径中使用 动态路径参数 d
  • EMC-MLCC电容反谐振点引起的RE辐射超标

    MLCC电容反谐振点引起的RE辐射超标 对待RE辐射问题 可以按照干扰源 干扰路径 被干扰源 入手较多的是干扰源和干扰路径 解决干扰源可以从展频 调频 屏蔽干扰源 增加RC snabber吸收干扰源等方向入手 解决干扰路径的 可以分为差模干
  • 网络互连基础的实验

    拓扑 需求 某网络整体结构如图所示 根据如图的IP规划 为设备配置IP地址 在各路由器上配置静态路由 要求实现全网互联 在DNS服务器上增加一条域名解析记录 域名可自定义 当通过PC端用域名访问Web服务器时 PC端浏览器能够返回web服务
  • Python使用免费天气API,获取全球任意地区的天气情况

    需求背景 公司是做外贸服装的 在亚马逊平台上有多个地区店铺运营 运营人员需要参考地区的天气情况 上新的服装 所以需要能够获取全球任意地区的天气情况 还需要预测未来10 15天的天气情况 选型API 天气API中有大把免费的api 如 国内的