BeautifulSoup解析HTML

  • 需要解析HTML源码里面的内容,包含特定标签和属性
<div class="file-source"><table><tr><th align="right">Line</th><th align="right">Branch</th><th align="right">Exec</th><th align="left">Source</th></tr><tr class="source-line"><td class="lineno"><a id="l1" href="#l1">1</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="c1">// RunAdder.cpp</span></td></tr><tr class="source-line"><td class="lineno"><a id="l2" href="#l2">2</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l3" href="#l3">3</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;iostream&gt;</span></td></tr><tr class="source-line"><td class="lineno"><a id="l4" href="#l4">4</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">&lt;unistd.h&gt;</span></td></tr><tr class="source-line"><td class="lineno"><a id="l5" href="#l5">5</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l6" href="#l6">6</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#ifdef GCOV</span></td></tr><tr class="source-line"><td class="lineno"><a id="l7" href="#l7">7</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="k">extern</span><span class="w"> </span><span class="s">&quot;C&quot;</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">__gcov_flush</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l8" href="#l8">8</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="k">extern</span><span class="w"> </span><span class="s">&quot;C&quot;</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">__gcov_dump</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l9" href="#l9">9</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="k">extern</span><span class="w"> </span><span class="s">&quot;C&quot;</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="n">__gcov_reset</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l10" href="#l10">10</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#endif </span><span class="c1">// TESTPLUS_GCOV</span></td></tr><tr class="source-line"><td class="lineno"><a id="l11" href="#l11">11</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l12" href="#l12">12</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#include</span><span class="w"> </span><span class="cpf">&quot;./include/Adder.h&quot;</span></td></tr><tr class="source-line"><td class="lineno"><a id="l13" href="#l13">13</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l14" href="#l14">14</a></td><td class="linebranch"></td><td class="linecount coveredLine">1</td><td class="src coveredLine"><span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span></td></tr><tr class="source-line"><td class="lineno"><a id="l15" href="#l15">15</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l16" href="#l16">16</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="w">    </span><span class="k">while</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span></td></tr><tr class="source-line"><td class="lineno"><a id="l17" href="#l17">17</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="w">    </span><span class="p">{</span></td></tr><tr class="source-line"><td class="lineno"><a id="l18" href="#l18">18</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l19" href="#l19">19</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">       </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;dump</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l20" href="#l20">20</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l21" href="#l21">21</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">Adder</span><span class="w"> </span><span class="n">adder</span><span class="p">;</span></td></tr><tr class="source-line"><td class="lineno"><a id="l22" href="#l22">22</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">print_value</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l23" href="#l23">23</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l24" href="#l24">24</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l25" href="#l25">25</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">print_value</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l26" href="#l26">26</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l27" href="#l27">27</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">5</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l28" href="#l28">28</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">1/2</summary><div class="linebranchContents"><div class="takenBranch">&check; Branch 1 taken 1 times.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">print_value</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">cout</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l29" href="#l29">29</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="w">    </span></td></tr><tr class="source-line"><td class="lineno"><a id="l30" href="#l30">30</a></td><td class="linebranch"></td><td class="linecount coveredLine">1</td><td class="src coveredLine"><span class="w">        </span><span class="n">adder</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l31" href="#l31">31</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l32" href="#l32">32</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="c1">// reference https://github.com/mongodb/mongo/blob/3adaac9be00bb0800184e0c27503c3d29c8e577e/src/mongo/util/quick_exit.cpp#L72</span></td></tr><tr class="source-line"><td class="lineno"><a id="l33" href="#l33">33</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="c1">// exit </span></td></tr><tr class="source-line"><td class="lineno"><a id="l34" href="#l34">34</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#ifdef TESTPLUS_GCOV</span></td></tr><tr class="source-line"><td class="lineno"><a id="l35" href="#l35">35</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#if (defined(__clang__) &amp;&amp; __clang_major__ &gt;= 12) || __GNUC__ &gt;= 11</span></td></tr><tr class="source-line"><td class="lineno"><a id="l36" href="#l36">36</a></td><td class="linebranch"><details class="linebranchDetails"><summary class="linebranchSummary">0/2</summary><div class="linebranchContents"><div class="notTakenBranch">&cross; Branch 1 not taken.</div><div class="notTakenBranch">&cross; Branch 2 not taken.</div></div></details></td><td class="linecount partialCoveredLine">1</td><td class="src partialCoveredLine"><span class="w">    </span><span class="n">__gcov_dump</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l37" href="#l37">37</a></td><td class="linebranch"></td><td class="linecount uncoveredLine">&cross;</td><td class="src uncoveredLine"><span class="w">    </span><span class="n">__gcov_reset</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l38" href="#l38">38</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#else</span></td></tr><tr class="source-line"><td class="lineno"><a id="l39" href="#l39">39</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="w">    </span><span class="n">__gcov_flush</span><span class="p">();</span></td></tr><tr class="source-line"><td class="lineno"><a id="l40" href="#l40">40</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#endif</span></td></tr><tr class="source-line"><td class="lineno"><a id="l41" href="#l41">41</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="cp">#endif </span><span class="c1">// TESTPLUS_GCOV</span></td></tr><tr class="source-line"><td class="lineno"><a id="l42" href="#l42">42</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l43" href="#l43">43</a></td><td class="linebranch"></td><td class="linecount uncoveredLine">&cross;</td><td class="src uncoveredLine"><span class="w">        </span><span class="n">sleep</span><span class="p">(</span><span class="mi">61</span><span class="p">);</span></td></tr><tr class="source-line"><td class="lineno"><a id="l44" href="#l44">44</a></td><td class="linebranch"></td><td class="linecount uncoveredLine">&cross;</td><td class="src uncoveredLine"><span class="w">    </span><span class="p">}</span></td></tr><tr class="source-line"><td class="lineno"><a id="l45" href="#l45">45</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr><tr class="source-line"><td class="lineno"><a id="l46" href="#l46">46</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="w">    </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span></td></tr><tr class="source-line"><td class="lineno"><a id="l47" href="#l47">47</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "><span class="p">}</span></td></tr><tr class="source-line"><td class="lineno"><a id="l48" href="#l48">48</a></td><td class="linebranch"></td><td class="linecount "></td><td class="src "></td></tr></table>
</div>
  • BeautifulSoup

https://blog.csdn.net/naer_chongya/article/details/130633043
https://blog.51cto.com/u_13673090/2466801

安装

pip install BeautifulSoup4

demo.py解析Gcov工具生成html文件,主要思路是先观察HTML中我们需要提取信息数据的特征,找到特征之后利用BeautifulSoup的各种方法来遍历和查询HTML文档。
具体的使用方法前面两个链接介绍的较为详细。

from bs4 import BeautifulSoup
import json
import requestsheaders = {'accept': 'application/json','Content-Type': 'application/json',
}json_data = {'project_id': 'mecha','report_id': 314,'file_name': 'Game/AchievementMoudle/AchievementData.cpp',
}response = requests.post('http://10.11.00.00:0000/api/get/file', headers=headers, json=json_data)file_data = json.loads(response.text).get('data')src_code = []with open(r'D:/test/html_test/out.RunAdder.cpp.a9f32ea8f9bca6ced5ffba7e0bd94313.html') as f:# soup = BeautifulSoup(f.read(), 'html.parser')  # 读文件方式soup = BeautifulSoup(file_data, 'html.parser')  # 指定数据"str"# for child in soup.children:#     print(child)# 查找 标签为tr class为source-line的数据links = soup.find_all("tr", "source-line")# print(links)for link in links:# url = link.text# print(url.strip())src = link.find("td", "src")line_no = link.find("td", "lineno")line_count_coveredLine = link.find("td", "linecount coveredLine")line_count_partial_coveredLine = link.find("td", "linecount partialCoveredLine")line_count_uncoveredLine = link.find("td", "linecount uncoveredLine")src_code.append({"src": src.text.strip(),"line_no": int(line_no.text.strip()),"line_count_coveredLine": line_count_coveredLine.text.strip()if line_count_coveredLine else None,"line_count_partial_coveredLine": line_count_partial_coveredLine.text.strip()if line_count_partial_coveredLine else None,"line_count_uncoveredLine": line_count_uncoveredLine.text.strip()if line_count_uncoveredLine else None})print(src.text.strip())
function_name = "main"
function_line_no = 0
stack_list = []
function_end_line_no = 0for s in src_code:if function_name in s["src"]:function_line_no = s["line_no"]break# 括号匹配来找到指定函数的起始行号
for s in src_code:if s["line_no"] >= function_line_no:if "{" in s["src"]:stack_list.append("{")if "}" in s["src"]:stack_list.pop()if len(stack_list) == 0 and s["line_no"] != function_line_no:function_end_line_no = s["line_no"]breakprint(function_line_no)
print(function_end_line_no)cover_count = 0
uncover_count = 0if function_end_line_no:for s in src_code:if function_line_no <= s["line_no"] <= function_end_line_no:if s["line_count_coveredLine"] or s["line_count_partial_coveredLine"]:cover_count += 1if s["line_count_uncoveredLine"]:uncover_count += 1print(cover_count)
print(uncover_count)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

箭头函数的应用场景

箭头函数是 ES6 中新增的一种函数书写方式&#xff0c;通常用于简洁地定义匿名函数。它的应用场景包括但不限于以下几个方面&#xff1a; 1.简化回调函数&#xff1a;箭头函数可以让回调函数的书写更加简洁&#xff0c;减少代码量。 // 传统函数形式 setTimeout(function() {…

麒麟系统安装Redis

一、背景 如前文&#xff08;《麒麟系统安装MySQL》&#xff09;所述。 二、下载Redis源码 官方未提供麒麟系统的Redis软件&#xff0c;须下载源码编译。 下载地址&#xff1a;https://redis.io/downloads 6.2.14版本源码下载地址&#xff1a;https://download.redis.io/re…

Linux系统中管理文件和目录权限的详细说明,部署服务器遇到文件权限的问题,就想着记录一下

Linux 文件权限基础 在Linux中&#xff0c;每个文件和目录都关联着三个类别的权限&#xff1a; 所有者&#xff08;Owner&#xff09;&#xff1a;通常是创建文件或目录的用户。组&#xff08;Group&#xff09;&#xff1a;与文件或目录关联的用户组。组成员共享文件的组权限…

【linux】socket通信代码解析

目录 一、Linux中Socket编程的基本步骤 1.1 创建Socket 1.2 绑定Socket 2.3 监听Socket(仅服务器端) 2.4 接受连接(仅服务器端) 2.5 连接Socket(仅客户端) 2.6 发送和接收数据 2.7. 关闭Socket 二、Linux中Socket编程具体实现 2.1 TCP服务器 2.2 TCP客户端 2…

生成随机函数f3,利用f3生成f18(python)

一、题目 给定一个完全随机函数f3。能够完全随机产生1~3之间任意一个自然数。现在要构造一个f18&#xff0c;让其能随机产生1~18之间任意一个自然数&#xff0c;要求写出f18的函数&#xff0c;另外要测试是否符合预期&#xff0c;f18要用f3 二、代码 欢迎大家给我更优解&…

mac 安装mysql启动报错 ERROR!The server quit without update PID file

发现问题&#xff1a; mac安装mysql初次启动报错&#xff1a; 一般出现这种问题&#xff0c;大多是文件夹权限&#xff0c;或者以前安装mysql卸载不干净导致。首先需要先确定问题出在哪&#xff1f;根据提示我们可以打开mysql的启动目录&#xff0c;查看启动日志。 问题解决&a…

项目如何整合sentinel

1、添加依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifact…

2.x86游戏实战-跨进程读取血量

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 接下来会写C/C代码&#xff0c;C/C代码不是很难&#xff0c;然后为了快速掌握逆向这个技能&#xff0c;我…

python--pickle函数的用法(超详细)

pickle是Python中的一个标准库&#xff0c;它提供了一种简单的方法来序列化和反序列化Python对象&#xff0c;以便可以将它们保存到文件或通过网络传输。pickle模块可以将Python对象转换为一种可以存储或传输的格式&#xff0c;然后可以通过pickle模块将其恢复为原始对象。 下…

不用再找了,这是大模型实践最全的总结

随着ChatGPT的迅速出圈&#xff0c;加速了大模型时代的变革。对于以Transformer、MOE结构为代表的大模型来说&#xff0c;传统的单机单卡训练模式肯定不能满足上千&#xff08;万&#xff09;亿级参数的模型训练&#xff0c;这时候我们就需要解决内存墙和通信墙等一系列问题&am…

对于mysql 故障的定位和排查

故障表现 他的执行时间超过规定的限制&#xff08;比如1000ms&#xff09;CPU使用率高大量业务失败&#xff0c;数据连接异常执行sql越来越慢&#xff0c;失败越来越多 解决方案 定位 应急 故障恢复 定位 查询慢sql的日志查看mysql 的performance schena&#xff08;里面…

flask-socket的实践

1.长连接和短连接的由来 1&#xff09;TCP在真正的读写操作之前&#xff0c;server与client之间必须建立一个连接&#xff0c; 当读写操作完成后&#xff0c;双方不再需要这个连接时它们可以释放这个连接&#xff0c; 连接的建立通过三次握手&#xff0c;释放则需要四次握手…

用Roofline模型去分析pytorch和Triton算子

用Roofline模型去分析pytorch和Triton算子 1.参考链接2.测试环境3.安装相关依赖4.锁频5.获取理论算力6.创建测试脚本7.运行测试程序生成Roofline图8.NVIDIA Nsight Compute生成Roofline9.效果图A.nn.LinearB.Triton实现 本文演示了如何用Roofline模型去分析pytorch和Triton算子…

如何快速判断IP被墙

IP被墙是指IP部分地区或者运营商无法被正常进行访问的一个情况。 被墙的原因有很多种不一一列举&#xff0c;由于被墙的时间短的为按周按月计算&#xff0c;时间长的则为按年计算&#xff0c;所以一般这种情况下只能选择更换IP。 检查办法&#xff1a; 第一&#xff0c;确认IP…

【银河麒麟】unzip程序卡住,处理机制详解,附代码

1.服务器环境以及配置 【机型】 处理器&#xff1a; HUAWEI,Kunpeng 920 内存&#xff1a; 400G 【内核版本】 4.19.90-23.18.v2101.ky10.aarch64 【OS镜像版本】 银河麒麟高级服务器操作系统V10-SP1-0711-arm 【第三方软件】 docker 2.问题现象描述 一台k8s服务器…

netconf_h3c_ac

# -*- coding:utf-8 -*- import xmltodict from ncclient import managerip=ACip地址, m=manager.connect(host=ip,port=830,username=账号,password=密码,hostkey_verify=False,device_params={name: h3c},allow_agent=False,look_for_keys=False,timeout=30)data_xml = <…

el-dropdown问题

问题&#xff1a;用element组件中的el-dropdown组件之后&#xff0c;发现随便点击屏幕任何地方控制台都会报错&#xff0c;之前使用的element的级联查询 &#xff0c;在加入这个组件之后点击空白地方下拉面板没办法收回去。 element-ui.common.js?ccbf:2432 Uncaught TypeErr…

水上实用救生工具_救生拉杆_鼎跃安全

每年&#xff0c;由于水上事故而失去生命的人数不胜数&#xff0c;水上安全问题也成为公众关注的焦点。如何在关键时刻实施有效的救援&#xff0c;成为保障生命的重要课题。作为水上救援的重要工具&#xff0c;救生拉杆在紧急情况下发挥了无可替代的作用。 救生拉杆&#xff0c…

springboot 缓存框架Cache整合redis组成二级缓存

springboot 缓存框架Cache整合redis组成二级缓存 项目性能优化的解决方案除开硬件外的方案无非就是优化sql&#xff0c;减少sql 的执行时间&#xff0c;合理运用缓存让同样的请求和数据库之间的连接尽量减少&#xff0c;内存的处理速度肯定比直接查询数据库来的要快一些。今天就…

CDP问卷的常见问题

CDP问卷的常见问题可以归纳如下&#xff1a; 哪些企业会收到CDP邀请&#xff1f; 企业会收到来自投资和/或采购机构的邀请&#xff0c;以填写CDP问卷并披露相应的环境管理信息。 未收到邀请的企业可否填报&#xff1f; 未收到邀请的企业可以选择自行填报。他们需发送申请自愿…