Python实战 | 如何使用 Python 调用 API

本文目录

一、前言

二、调用浙江·数据开放平台API获取数据

  (一)API获取数据的流程

  (二)HTTP请求

  (三)API的参数

  (四)使用request库获取API数据

三、调用百度通用翻译API

四、总结

本文共8914个字,阅读大约需要23分钟,欢迎指正!

Part1引言

API 的全称为"​​Application Programming Interface​​",即“​​应用程序编程接口​​”,是一组定义了不同软件组件之间如何相互通信的规则和协议,不同的软件系统可以通过 API 来交换数据和功能,以实现特定的任务目标。通过 API,我们就可以利用其他软件系统的功能,而不需要详细了解其内部是如何实现的。

在如下两篇文章中,我们介绍了如何使用 Python 来调用高德公司提供的地理服务 API 以及百度公司提供的图像识别 OCR API,从而可以借助地理编码和逆地理编码来自由地转换文本地址和经纬度,并且也能够通过 OCR 技术将不可读取的 PDF 或图片中的表格读到 Excel 中。

​​数据治理 | 根据地址获取经纬度及行政区划——API的妙用​​

​​数据治理 | 还在人工识别表格呢?Python 调用百度 OCR API 又快又准​​

那么为什么再次介绍 API 呢?我们的目的是向大家介绍 API 的相关概念,以及如何使用 Python 中的​​requests​​包来调用 API 以获得数据或实现相应功能,更具有普适性,下面我们将通过两个例子展开介绍本文内容。

本教程基于 pandas 1.5.3 版本书写。

本文中所有 Python 代码均在集成开发环境 Visual Studio Code (VScode) 中使用交互式开发环境 Jupyter Notebook 中编写。

Part2调用浙江·数据开放平台 API 获取数据

我们首先介绍如何调用 API 来获取数据,​​浙江·数据开放平台​​是一个免费向用户提供数据接口服务、通过接口对接实现数据获取和开发利用的政府平台,平台对每项数据都提供 3 个接口,包括总数接口、分页接口和更新时间查询接口,分别用于查询数据集包含的数据总条数、分页调取数据,以及判断当前数据是否已更新。在本例中我们使用​​浙江·数据开放平台​​提供的“​​浙江省粮食企业信用评价结果信息​​”接口获取浙江省粮食企业信用评价数据,该接口由浙江省粮食物资局发布,我们使用其中的分页接口。

💡 需要说明一点,实际中我们在使用一个 API 之前,第一步,也是最重要的一步,就是需要仔细阅读 API 的相关文档,了解其功能、参数等重要信息,然后才是后面的流程。

1API 获取数据的流程

上文提到,API 是一组定义了不同软件组件之间交互的规范,交互过程中 API 可以使用不同的通信协议,其中最常用的是 HTTP。HTTP (“Hypertext Transfer Protocol”,超文本传输协议) 是一种用于在网络上发送和接收超文本的协议,它提供了一种可靠的方式来发送请求和接收响应,想象一下你使用浏览器访问一个网站,当在浏览器中输入网址并按下回车键时,浏览器会向服务器发送一个 HTTP 请求,这个请求会告诉服务器你想要浏览哪个网页或资源;当服务器接收这个请求后,会处理请求并生成一个响应,响应包含请求的内容,例如网页的 HTML 代码、图像等其他资源,服务器将响应发送回浏览器,浏览器解析响应并将内容显示在屏幕上,这种通信协议具有广泛的支持和易用性。

下面是调用 API 获取数据的流程:

图片

GET 请求和 POST 请求是 HTTP 协议中最常见的两种请求方法,用于客户端与服务器之间的数据交互,两者的区别主要在传输安全性、传输方式、数据长度和数据缓存几个方面(由于篇幅原因,我们在这里不详细展开介绍)。

我们在调用 API 时应该根据具体的需求和安全性考虑,来选择使用 GET 请求还是 POST 请求。一般情况下如果只是获取少量数据且不涉及敏感信息,可以使用 GET 请求,如果需要向服务器提交数据,或者数据量较大,可以使用 POST 请求。

2HTTP 请求

HTTP 请求是在 HTTP 协议下的一种数据格式,用于向服务器发送请求,其通常由请求行、请求头和请求体三部分构成,请求头和请求体之间用空行隔开,其中各部分包含的信息如下:

  1. 请求行 (Request Line):包括请求方法 (GET请求、POST请求等)、请求的 URL 和协议版本。
  2. 请求头 (Request Headers):包括一些关于请求的附加信息,如 User-Agent(用户代理,标识请求的客户端类型等)、Content-Type(指定请求体中发送的数据的类型)等。
  3. 请求体 (Request Body):HTTP 请求中可选的组成部分,用于向服务器传递请求所需的参数或数据,如表单数据、JSON 数据等。

GET 请求通过 URL 的查询字符串将参数传递给服务器,也就是说参数会附加在 URL 的末尾,而 POST 请求将参数放在请求体中传递给服务器,所以通常情况下 GET 请求的请求体为空,POST 请求的请求体不为空。

3API 的参数

通常在调用 API 时需要关注公共参数、请求参数和响应参数这三种参数,其中各部分包含的信息如下:

  1. 公共参数:调用 API 时经常使用的通用参数,用于标识请求的身份、版本、签名等信息,这些参数在调用不同 API 时不会随着 API 的变化而变化。
  2. 请求参数:调用具体的 API 时需要提供的参数,用于描述请求的具体内容(如传递查询条件、分页信息等),这些参数是必需的还是可选的需要根据具体 API 的设计而定。
  3. 响应参数:API 调用成功后返回的信息,通常包括 API 调用结果的状态码、错误信息、返回的数据等。根据 API 的设计,响应参数的内容和格式可能会有不同。

公共参数和请求参数是用于发起 API 请求的,而响应参数是 API 返回的结果,需要注意一点,不同的 API 可能有不同的参数要求。

本例中需要获取浙江省粮食企业信用评价数据,根据分页数据获取接口的介绍,该 API 设计的参数如下:

参数名称

类型

说明

appsecret

String

用户应用识别码,通过申请获得

pageNum

Int

页数

pageSize

Int

每页个数(不超过200)

上表中的参数​​appsecret​​为公共参数,​​pageNum​​和​​pageSize​​为请求参数。

参数名称

类型

说明

status

Int

0代表失败,1代表成功

msg

String

返回信息

data

JSON

返回数据

上表中的三个参数为响应参数,用于返回请求的结果,我们只需要根据参数的名称就可以在返回的响应信息中提取相应的内容。当然在使用浙江省数据开放平台接口前,需要先完成用户注册并登录平台创建数据应用、完善应用信息,应用信息保存后即可进行接口申请,在接口申请审核通过后,就可以进行数据接口对接工作,操作流程见下图:

图片

更加详细的注册和申请流程见官方提供的​​接口服务使用手册​​,本文不再赘述。

4使用 requests 库获取 API 数据

如果你了解过网页爬取或 API 交互,那么你应该对 requests 库并不陌生,requests 是一个常用于发送 HTTP 请求并处理响应的 Python 库,其中​​requests.get()​​和​​requests.post()​​是常用的两个函数,它们分别用于发送 GET 请求和 POST 请求。

函数​​requests.get()​​的基本用法如下:

import requests
response = requests.get(url='https://api.example.com/data')

上述代码会发送一个 GET 请求到​​https://api.example.com/data​​(即参数 url),并且将响应结果保存在变量​​response​​中。此外该函数还有一个常用的可选参数​​params​​用于传递查询参数,其中的参数会自动添加到 URL 中,代码如下:

params_value = {'key1':'value1', 'key2':'value2'}
response = requests.get('https://api.example.com/data', params=params_value)

上述代码将发送 GET 请求到​​https://api.example.com/data?key1=value1&key2=value2​​。除了参数​​url​​和​​params​​,函数​​requests.get()​​还有一些其他的可选参数,比如参数​​headers​​用于设置请求头、​​timeout​​用于设置请求超时时间、​​cookies​​用于设置请求的 Cookie 值等等。

函数​​requests.post()​​的基本用法类似,除了参数​​url​​,该函数的可选参数​​data​​用于传递请求数据,代码如下:

import requests
params_value = {'key1':'value1', 'key2':'value2'}
response = requests.post('https://api.example.com/data', data=params_value)

上述代码将发送 POST 请求到​​https://api.example.com/data​​,并将​​params_value​​作为请求数据发送到服务器,当然也可以使用参数​​json​​来发送 JSON 数据,若设置参数​​jsnotallow=params_value​​会自动将数据转换为 JSON 格式并发送到服务器,此外,函数​​requests.post()​​还有其他的可选参数,这里就不多介绍了。

下面我们将分别使用 requests 库中的函数​​requests.get()​​和​​requests.post()​​来获取浙江省粮食企业信用评价数据,以下是 Python 代码:

import requests
import pandas as pd

# GET 请求
def data_get(pageNum, pageSize, appsecret, url):
    '''
    pageNum: 页数
    pageSize: 每页个数(不超过200)
    appsecret: 应用识别码(申请获得)
    url: api 接口
    '''
    # 以字典形式编辑查询参数
    parameters = {'pageNum':pageNum, 'pageSize':pageSize, 'appsecret':appsecret}

    # 发送 GET 请求,返回一个包含服务器响应信息的 response 对象
    response = requests.get(url = url, params = parameters)
    
    # HTTP 响应状态码为 200 表示请求成功,服务器成功处理了请求
    if response.status_code == 200:
        # 响应信息中status为 1,表示成功获取数据
        if response.json()['status'] == 1:
            ## 提取响应结果中返回的数据data,并转换为dataframe
            data = pd.DataFrame(response.json()['data'])
        else:
            # 响应信息中status不为 1,表示获取数据失败,需进一步检查原因
            print(response.json())
    else:
        # HTTP 响应状态码不为 200 时,提示“URL未正常响应请求”
        raise Exception('URL未正常响应请求')
    return data

data = data_get(pageNum = 1,
                 pageSize = 200, 
                 appsecret = '申请的 APP 识别码', 
                 url = 'http://data.zjzwfw.gov.cn/jdop_front/interfaces/cata_18444/get_data.do')
data
# POST 请求
def data_post(pageNum, pageSize, appsecret, url):
    # 以字典形式编辑请求体
    data_value = {'pageNum':pageNum, 'pageSize':pageSize, 'appsecret':appsecret}
    # 发送 POST 请求,返回一个包含服务器响应信息的 response 对象
    response = requests.post(url = url, data = data_value)
    
    if response.status_code == 200:
        # 响应信息中status为1,表示成功获取数据
        if response.json()['status'] == 1:
            data = pd.DataFrame(response.json()['data'])
        else:
            print(response.json())
    else:
        raise Exception('URL未正常响应请求')
    return data

data = data_post(pageNum = 1, 
                 pageSize = 200, 
                 appsecret = '申请的 APP 识别码', 
                 url = 'http://data.zjzwfw.gov.cn/jdop_front/interfaces/cata_18444/get_data.do')
data # 结果同上

使用函数​​requests.get()​​和​​requests.post()​​这两种请求方式得到的结果相同,该数据包含企业名称、统一社会信用代码、得分和等级四个字段,共107条数据,如下:

图片

Part3调用百度通用翻译 API

​百度翻译开放平台​​是百度翻译面向广大开发者提供开放服务的平台,通用翻译 API 是该平台提供的服务之一。通用翻译 API 通过 HTTP 接口对外提供多语种互译服务,我们只需传入待翻译的内容,并指定要翻译的源语言和目标语言种类,即可想要的翻译结果,下面我们就来介绍如何调用此API。

根据官方提供的通用翻译 API 接入文档,调用此 API 支持 GET 或 POST 方式,如果需要使用 POST 方式,需要指定 Content-Type 为 application/x-www-form-urlencoded。首先我们先来看通用翻译 API 需要的输入参数,如下表所示:

参数名称

说明

q

待翻译内容,UTF-8 编码,长度不超过 6000 bytes

from

翻译源语言

to

翻译目标语言

appid

平台分配的应用程序的标识符

salt

随机数(盐值)

sign

appid+q+salt+密钥做 MD5 后得到的 32 位小写签名

为了确保调用 API 的安全性,通用翻译 API 要求使用参数​​sign​​对请求进行签名,签名由平台分配的 appid、待翻译内容 q、随机值 salt 和密钥四部分构成,其生成方法为:将 appid、q、salt、密钥按顺序连接成一个字符串,再对该字符串做 MD5 计算,就可以获得 32 位小写的 sign。

成功调用 API 后返回 JSON 格式的响应结果,其中包含以下输出参数:

官方对输入参数和输出参数有更详细的说明,可自行进一步了解

参数名称

类型

说明

from

String

翻译源语言

to

String

翻译目标语言

trans_result

Array

翻译结果,包括原始内容 (src) 和翻译结果 (dst)

error_code

Int

错误码,仅在出现错误时显示,详细含义和解决方案见通用翻译 API 接入文档

下面我们就来调用通用翻译 API ,实现代码如下:

import requests
import random
from hashlib import md5

# GET 请求
def trans_Baidu_GET(query, APPID, APPKEY, fromlanguage = 'auto', tolanguage = 'en', action = 0):
    '''
    query: 待翻译内容
    APPID: 申请的 APP ID
    APPKEY: 申请的密钥
    fromlanguage: 待翻译语言; 'auto' 表示自动识别
    tolanguage: 翻译目标语言; 'zh' 表示中文
    * 语言代码见: https://api.fanyi.baidu.com/doc/21

    action: 1: 使用自定义术语干预API; 0: 不使用自定义术语干预API
    '''
    # 定义函数,作用是进行 MD5 并将散列值转换为 16 进制
    def make_md5(s, encoding = 'utf-8'):
        return md5(s.encode(encoding)).hexdigest()
    
    # 在 32768 至 65536 的范围内取随机数
    Salt = random.randint(32768, 65536)
    # 使用 APPID、请求 query、随机数和密钥构成签名
    Sign = make_md5(APPID + query + str(Salt) + APPKEY)

    # 发送请求的 URL
    url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'
    # 以字典形式编辑查询参数
    parameters = {'appid': APPID, 'q': query, 'from': fromlanguage, 'to': tolanguage, 'salt': Salt, 'sign': Sign}

    # 返回响应信息,并提取响应中的翻译结果
    response = requests.get(url, params = parameters)
    result_list = response.json()['trans_result']
    ## 提取翻译结果中的翻译后内容 (dst)
    result = '\n'.join(item['dst'] for item in result_list)
    return result


# POST 请求
def trans_Baidu_POST(query, APPID, APPKEY, fromlanguage = 'auto', tolanguage = 'zh', action = 0):
    # 定义函数,作用是进行 MD5 并将散列值转换为 16 进制
    def make_md5(s, encoding = 'utf-8'):
        return md5(s.encode(encoding)).hexdigest()
    Salt = random.randint(32768, 65536)
    Sign = make_md5(APPID + query + str(Salt) + APPKEY)
   
    # 发送通用翻译请求的 URL
    url = 'https://fanyi-api.baidu.com/api/trans/vip/translate'
    # 根据 API 接入文档,指定 Content-Type 为 application/x-www-form-urlencoded
    headers = {'Content-Type': 'application/x-www-form-urlencoded'}
    parameters = {'appid': APPID, 'q': query, 'from': fromlanguage, 'to': tolanguage, 'salt': Salt, 'sign': Sign}

    # 保存响应,并提取响应中的翻译结果
    response = requests.post(url, params = parameters, headers = headers)
    result_list = response.json()['trans_result']

    # 提取翻译结果中的翻译后内容 (dst)
    result = '\n'.join(item['dst'] for item in result_list)
    return result

在上面的代码中,我们定义了函数​​trans_Baidu_GET()​​和​​trans_Baidu_POST()​​,两个函数分别使用 GET 请求和 POST 请求调用通用翻译 API。它们的功能是相同的,在调用函数时,我们只需要输入待翻译原文(默认自动识别语种)、APPID 和密钥,即可得到翻译的结果(默认英文),当然如果想要翻译其他语种或者修改翻译的目标语言,可以通过指定参数​​fromlanguage​​和​​tolanguage​​来实现。

当然我们也可以实现批量翻译多条语句,只需要将各个语句用换行符​​\n​​隔开,此时翻译结果也使用换行符​​\n​​输出。现在我们来调用上述函数,代码如下:

APPID = '分配的 APPID'
APPKEY = 'APPID 对应的密钥'
# GET 请求
answer1 = trans_Baidu_GET('成为企研·社科大数据平台会员,用最独家的数据,学最实用的Python,画最酷的图!', APPID, APPKEY)
answer1  
'''
Become a member of the Enterprise Research Social Science Big Data Platform, use the most exclusive data, learn the most practical Python, and draw the coolest pictures!
'''

# POST 请求
answer2 = trans_Baidu_POST('成为企研·社科大数据平台会员,\n用最独家的数据,\n学最实用的Python,\n画最酷的图!', APPID, APPKEY)
answer2 
'''
Becoming a member of the Enterprise Research · Social Science Big Data Platform,
Using the most exclusive data,
Learn the most practical Python,
Draw the coolest picture!
'''

Part4总结

本文介绍了 API 是如何实现访问外部数据和功能的,也对 HTTP 协议以及两个常用的请求方式——GET 请求和 POST 请求做了简单介绍,然后通过两个例子演示了如何利用 Python 中的 requests 库实现 API 的调用,并解析返回的响应结果来获得相应的内容,也向大家展示了两种请求方式的异同点,希望对大家有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/518830.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vscode-task.json自定义任务

以下所有内容,参考自VScode官方文档: vscode_task-docs任务说明文档vscode_variables-reference-docs变量说明文档vscode addtional docs for task 说明: 博客内容均为个人理解,有错误请移步官方文档, 查阅文档, 纠正错误. 这篇blog记录一下个人对vscode任务(task)的使用方法 个…

C++中的STL——vector类的基本使用

目录 vector介绍 vetor类定义 vector常见构造 vector类中的容量操作 size()函数与capacity()函数 resize()函数 reserve()函数 max_size()函数 vector类中的数据遍历操作 operator[]()与at()函数 vector类中的迭代器遍历 正向遍历begin()和end()迭代器——非const …

adobe stock会员开通付费付款订阅充值教程/adobe stock免费白嫖一个月

登录adobe stock的官网,点击你想要下载的视频,然后点击免费下载,我们点击免费试用按钮,可以看到非常贵,需要80美金一个月,用fomepay可以免费白嫖一个月 点击获取一张虚拟信用卡,就可以白嫖一个…

基于JAVA+SpringBoot+Vue的前后端分离的大学健康档案管理系统

一、项目背景介绍: 随着社会的发展和科技的进步,人们越来越重视健康问题。大学作为培养人才的摇篮,学生的健康状况直接影响到国家的未来。然而,传统的大学健康档案管理方式存在诸多问题,如信息不透明、数据分散、更新不…

【MySQL数据库 | 第二十二篇】深入了解MySQL锁

前言: MySQL作为世界上最流行的关系型数据库管理系统之一,广泛应用于各种规模和类型的应用程序中。在处理高并发和大规模数据操作时,确保数据的一致性和完整性是至关重要的。而MySQL的锁机制正是在这样的背景下发挥着重要作用。 MySQL锁机制…

LeetCode 热题 100 | 贪心算法

目录 1 121. 买卖股票的最佳时机 2 55. 跳跃游戏 3 45. 跳跃游戏 II 4 763. 划分字母区间 菜鸟做题,语言是 C 1 121. 买卖股票的最佳时机 解题思路: 维护一个变量 max_pricemax_price 用于存储排在 i 天之后的股票最高价格第 i 天的最高利润 …

地质地貌卫星影像集锦(三 矿产资源篇)

1. 元古代沉积岩的抬升 这个地区位于Leigh Creek中部,距离澳大利亚南部的阿德莱德约500km,弗林德斯山脉的北面是Gawler克拉通。弗林德斯山脉是由元古代沉积岩抬升后形成的块体,在其之下的是寒武纪的岩石,它座落在距阿德莱德北…

唐刘:关于产品质量的思考 - 我的基本认知

我在文章《 TiDB in 2023 - 一次简单的回顾 》 中提到了一个我一直以来面临的问题:每次 TiDB 发布新版本后,我如何能够非常自信地告诉客户,这个版本的质量很好,大家可以放心使用呢? 坦白地说, 这个问题并不…

[HackMyVM]靶场Deeper

难度:Easy kali:192.168.56.104 靶机:192.168.56.148 端口扫描 ┌──(root㉿kali2)-[~/Desktop] └─# nmap 192.168.56.148 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-04-05 19:55 CST Nmap scan report for 192.168.56.148 Host is up (0.00013s latency). N…

数据结构:详解【树和二叉树】

1. 树的概念及结构(了解) 1.1 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝…

智慧公厕升级为多功能城市智慧驿站,助力智慧城市发展

在现代城市的建设中,公共厕所作为基础必备的民生设施,一直是城市管理的重要组成部分。随着科技的不断发展,智慧公厕应运而生,成为了公共厕所信息化、数字化、智慧化的应用解决方案。而近年来,智慧公厕也进行了升级发展…

20240309web前端_第三周作业_教务系统页面

作业&#xff1a;教务系统页面 成果展示&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1…

拥塞控制算法系列之:Swift-谷歌2020年SIGCOM-包级别端到端TIMELY拥塞控制算法

核心要点&#xff1a; 谷歌 2020 SIGCOM基于delay的AIMD拥塞拆分EC和FC&#xff0c;时延敏感场景优势分别计算EC和FC的wnd&#xff08;最核心&#xff09;保障吞吐和低延迟。Swift 因利用延迟的简单性和有效性而闻名包级别的论文&#xff1a;https://dl.acm.org/doi/pdf/10.11…

【保姆级讲解如何计算机视觉入门】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

江协STM32:对射式红外传感器计次和旋转编码器计次

对射式红外传感器计次 还是复制粘贴之前的文件 创建外部中断文件 然后写初始化函数 外部中断函数创建 这里写外部中断函数 看着这个图来配置 具体步骤就是&#xff1a; 第一步&#xff0c;配置RCC&#xff0c;把我们这里涉及的外设的时钟都打开&#xff0c;不打开时钟&#…

深入浅出 -- 系统架构之微服务中OpenFeign最佳实践

前面我们讲了一下 Ribbon 和 RestTemplate 实现服务端通信的方法&#xff0c;Ribbon 提供了客户端负载均衡&#xff0c;而 RestTemplate 则对 http 进行封装&#xff0c;简化了发送请求的流程&#xff0c;两者互相配合&#xff0c;构建了服务间的高可用通信。 但在使用后也会发…

c++的学习之路:12、vector(1)

这章主要是根据cplusplus中的文档进行使用Vector&#xff0c;文章末附上测试代码。 目录 一、什么是vector 二、vector的简单使用 三、代码 一、什么是vector 下图是cplusplus的简介&#xff0c;上面一共有六点&#xff0c;如下&#xff1a; 1、vector是表示可变大小数组…

Leetcode 216.组合总和III

题目 思路 题目说只使用数字1-9&#xff0c;是k个数的和 树的宽度是1-9&#xff0c;树的深度是k 1.确定递归函数的返回值及参数&#xff1a; 返回值是void,参数这里还是先设定两个全局变量。一个是path存放符合条件单一结果。如&#xff1a;&#xff08;1&#xff0c;2&…

VSCODE EIDE使用debug记录

用上vscode之后就感觉之前的keil不太爽了&#xff0c;找什么东西搜索都很麻烦&#xff0c;之前有写过eide的文章&#xff0c;想着能不能在eide里面就把debug也做了&#xff0c;发现真的可以&#xff0c;下面记录一下&#xff0c;主要是参考这个大佬的文章&#xff0c;非常感谢。…

微电网优化:基于肝癌算法(Liver Cancer algorithm, LCA)的微电网优化(提供MATLAB代码)

一、微电网优化模型 微电网是一个相对独立的本地化电力单元&#xff0c;用户现场的分布式发电可以支持用电需求。为此&#xff0c;您的微电网将接入、监控、预测和控制您本地的分布式能源系统&#xff0c;同时强化供电系统的弹性&#xff0c;保障您的用电更经济。您可以在连接…