32 KiB
32 KiB
In [94]:
import pandas as pd
import mysql.connector
import warnings
# 忽略特定警告
warnings.filterwarnings(
"ignore",
category=UserWarning,
message="pandas only supports SQLAlchemy connectable",
)
db_host = "sh-cdb-qlnh5ecg.sql.tencentcdb.com"
db_port = "25944"
db_user = "root"
db_password = "VaDS4mrgKoJi"
db_name = "xbot_market_info"
conn = mysql.connector.connect(
host=db_host, port=db_port, user=db_user, password=db_password, database=db_name
)
query = "SELECT * FROM rpa_app_scene_info_dev"
df = pd.read_sql(query, conn)
conn.close()
print(f"最近编辑应用数据的总条数为:{df.shape[0]}")最近编辑应用数据的总条数为:48969
In [95]:
import requests
from typing import List
from urllib import parse
def get_token(username, password):
"""
利用网页端获取 token
:param username: 用户名
:param password: 密码
:return: token
"""
url = "https://api.winrobot360.com/oauth/token"
data = {
"username": username,
"password": password,
"grant_type": "password",
"scope": "all",
}
payload = parse.urlencode(data)
headers = {
"accept": "application/json",
"authorization": "Basic Y29uc29sZTpzVVdpeTZzTmlYZDBlNUxo",
"content-type": "application/x-www-form-urlencoded;charset=UTF-8",
}
response = requests.request("POST", url, headers=headers, data=payload).json()
if response.get("success") == "false":
raise ValueError(response.get("msg"))
return response.get("access_token")
def get_activity_info(token, page=1, size=200):
"""
获取活动信息列表
:param token: 认证用的 token
:param page: 分页页码,默认为 1
:param size: 分页大小,默认为 10
:return: 所有页的数据列表
"""
url = "https://api.winrobot360.com/api/v1/robot/activity/package/list"
all_data = []
while True:
payload = {
"source": "market",
"page": page,
"size": size,
"groupInfoUuid": "22222222-2222-2222-2222-222222222222",
"marketUiTag": "",
"uiaType": "pc",
"order": "desc",
}
headers = {
"Authorization": f"bearer {token}",
"Accept": "application/json",
"Accept-Encoding": "json",
}
response = requests.get(url, headers=headers, params=payload)
response_json = response.json()
if not response.ok or not response_json.get("success"):
raise ValueError(response_json.get("msg"))
data = response_json.get("data")
all_data.extend(data)
if not data or len(data) < size:
break
page += 1
return all_data
username = "剑心@fckj"
password = "320753691love"
token = get_token(username=username, password=password)
activity_infos = get_activity_info(token)
# print(activity_infos)
market_activity_detail_data = {}
for item in activity_infos:
# print(item.get("packageName"), item.get("packageViewName"))
market_activity_detail_data[item.get("packageName")] = item.get("packageViewName")
print(f"官方指令的总条数为:{len(market_activity_detail_data)}")官方指令的总条数为:147
In [96]:
import json
df["scene_info"]
df["extension_names"] = df["scene_info"].apply(
lambda x: json.loads(x).get("extension_names")
)
df["extension_names"]
empty_count = df['extension_names'].apply(lambda x: len(x) == 0).sum()
non_empty_count = df['extension_names'].apply(lambda x: len(x) > 0).sum()
print(f"{'最近编辑应用总数:':<20}{len(df)}")
print(f"{'应用未使用自定义指令总数:':<20}{empty_count}")
print(f"{'应用使用自定义指令总数:':<20}{non_empty_count}")
print(f"{'应用使用自定义指令占比:':<20}{non_empty_count / len(df):.2%}")最近编辑应用总数: 48969 应用未使用自定义指令总数: 28800 应用使用自定义指令总数: 20169 应用使用自定义指令占比: 41.19%
In [97]:
activity_code_keys = set(market_activity_detail_data.keys())
used_market_activity_robot_count = df["extension_names"].apply(lambda x: any(key in str(x) for key in activity_code_keys)).sum()
print(f"最近编辑应用总数: {len(df)}")
print(f"应用使用自定义指令总数: {non_empty_count}")
print(f"应用使用市场自定义指令总数: {used_market_activity_robot_count}")
print(f"应用使用市场自定义指令占比: {used_market_activity_robot_count/len(df):.2%}")
print(f"市场自定义指令在使用自定义指令占比: {used_market_activity_robot_count/non_empty_count:.2%}")最近编辑应用总数: 48969 应用使用自定义指令总数: 20169 应用使用市场自定义指令总数: 18920 应用使用市场自定义指令占比: 38.64% 市场自定义指令在使用自定义指令占比: 93.81%
In [99]:
# 遍历 activity_code_keys, 统计应用的使用次数
# 确保 extension_names 列为字符串类型
df["extension_names_str"] = df["extension_names"].astype(str)
# 初始化计数字典
market_activity_map_robot_count = {}
# 使用矢量化操作统计每个 key 的出现次数
for key in activity_code_keys:
count = df["extension_names_str"].str.contains(key).sum()
if count > 0:
market_activity_map_robot_count[key] = count
# 按照使用次数从大到小排序
market_activity_map_robot_count = dict(
sorted(market_activity_map_robot_count.items(), key=lambda x: x[1], reverse=True)
)
# print(f"\t\t市场指令应用占比\t最近编辑应用占比")
for package_code, package_code_count in market_activity_map_robot_count.items():
# if package_code_count < 500:
# continue
print(
f"""{market_activity_detail_data.get(package_code)}:\t{package_code_count}\t{package_code_count / used_market_activity_robot_count:.2%}\t{package_code_count / len(df):.2%}"""
)
# print(f"{market_activity_detail_data.get(package_code)}:\t{package_code_count}")Excel扩展操作: 7887 41.69% 16.11% 列表扩展操作: 2460 13.00% 5.02% 日期时间扩展: 2181 11.53% 4.45% 网页扩展操作: 2125 11.23% 4.34% 登录扩展操作: 1870 9.88% 3.82% 弹窗智能侦测器: 1722 9.10% 3.52% 文件扩展功能: 1447 7.65% 2.95% 飞书电子表格(RPA): 1301 6.88% 2.66% 通用日期选择: 1205 6.37% 2.46% 数据库扩展操作: 1058 5.59% 2.16% 文本扩展功能: 984 5.20% 2.01% XPath跨域获取网页元素: 867 4.58% 1.77% 滑块拼图验证码(免费): 815 4.31% 1.66% 个人微信: 782 4.13% 1.60% 并发调用子流程: 772 4.08% 1.58% WPS 在线表格: 713 3.77% 1.46% 获取进程or杀进程: 701 3.71% 1.43% 应用帐号信息: 696 3.68% 1.42% json数据提取: 684 3.62% 1.40% 紫鸟控制台操作: 649 3.43% 1.33% 图片扩展操作: 635 3.36% 1.30% 【付费】验证码识别(web): 579 3.06% 1.18% 飞书多维表格: 552 2.92% 1.13% 云码验证码扩展: 546 2.89% 1.11% Cookie登录操作: 364 1.92% 0.74% 抖店操作: 359 1.90% 0.73% 数学函数操作: 321 1.70% 0.66% 钉钉在线表格操作: 320 1.69% 0.65% 懒加载操作: 282 1.49% 0.58% SAP 扩展: 259 1.37% 0.53% 字典扩展操作: 253 1.34% 0.52% 拼多多数据获取: 253 1.34% 0.52% MySQL扩展操作: 250 1.32% 0.51% 企业微信: 229 1.21% 0.47% WPS 扩展: 224 1.18% 0.46% 钉钉云盘操作: 221 1.17% 0.45% 亚马逊卖家后台扩展操作: 214 1.13% 0.44% 计算机扩展: 210 1.11% 0.43% Photoshop 操作: 181 0.96% 0.37% 钉钉机器人操作: 176 0.93% 0.36% 影刀离线OCR: 164 0.87% 0.33% 等待任意元素: 161 0.85% 0.33% 广告杀手: 160 0.85% 0.33% 消息推送: 159 0.84% 0.32% PDF 扩展操作: 150 0.79% 0.31% 腾讯文档扩展: 137 0.72% 0.28% 动态调用: 135 0.71% 0.28% (新版)生意参谋数据获取: 132 0.70% 0.27% 手机系统操作: 130 0.69% 0.27% 语音助手-edge-tts: 129 0.68% 0.26% 拼多多时间选择: 121 0.64% 0.25% 手机文件操作: 117 0.62% 0.24% 进度条扩展操作: 104 0.55% 0.21% 鼠标扩展操作: 91 0.48% 0.19% DataFrame表格扩展指令集: 90 0.48% 0.18% 京东商智扩展操作: 89 0.47% 0.18% 获取图表元素数据: 87 0.46% 0.18% 生意参谋常用操作: 76 0.40% 0.16% Word 扩展: 76 0.40% 0.16% 万相台无界版: 73 0.39% 0.15% 浏览器扩展: 72 0.38% 0.15% 隐藏/显示浏览器窗口: 72 0.38% 0.15% 视频操作操作: 69 0.36% 0.14% 旺店通自定义操作: 68 0.36% 0.14% Outlook 扩展操作: 67 0.35% 0.14% 抖音时间选择: 66 0.35% 0.13% 淘宝时间选择: 63 0.33% 0.13% 链接编码和解码: 60 0.32% 0.12% 罗盘.经营: 54 0.29% 0.11% 赤兔名品_时间选择: 50 0.26% 0.10% Sqlite3 扩展操作: 48 0.25% 0.10% 翻译扩展操作: 48 0.25% 0.10% 生意参谋时间选择操作: 43 0.23% 0.09% 京东商智数据获取-商家版: 43 0.23% 0.09% 维格表操作: 40 0.21% 0.08% HubStudio浏览器扩展操作: 39 0.21% 0.08% 软件(win)扩展: 35 0.18% 0.07% 天猫宝贝上架: 35 0.18% 0.07% 阿里妈妈多平台数据获取: 34 0.18% 0.07% Sql Server 扩展: 33 0.17% 0.07% 断言: 31 0.16% 0.06% 二维码条形码: 30 0.16% 0.06% PPT 扩展: 30 0.16% 0.06% Redis 扩展: 29 0.15% 0.06% 免费OCR: 29 0.15% 0.06% 京东商智数据获取-品牌版: 29 0.15% 0.06% 打印机扩展: 28 0.15% 0.06% 异步下载图片: 27 0.14% 0.06% 唯品会指令集: 26 0.14% 0.05% 巨量千川: 25 0.13% 0.05% 京准通操作: 23 0.12% 0.05% 电子发票识别: 21 0.11% 0.04% 生意参谋扩展操作(win): 21 0.11% 0.04% RAR解压缩操作: 21 0.11% 0.04% 汇率查询与转换: 20 0.11% 0.04% 物流信息分析: 20 0.11% 0.04% 紫鸟浏览器API: 18 0.10% 0.04% PostgreSQL 扩展: 18 0.10% 0.04% CSV扩展操作: 18 0.10% 0.04% 获取Windows凭据: 17 0.09% 0.03% 淘系推广时间选择: 15 0.08% 0.03% 引入指定应用python模块: 15 0.08% 0.03% 网银安全控件输入: 15 0.08% 0.03% 物流信息查询: 14 0.07% 0.03% 云码验证码扩展(win): 13 0.07% 0.03% 巨量百应数据扩展 (达人版): 12 0.06% 0.02% 京东商智数据获取-品牌店铺版: 12 0.06% 0.02% Oracle 扩展操作: 11 0.06% 0.02% 飞鸽客服系统扩展: 11 0.06% 0.02% 云码验证码扩展(手机): 11 0.06% 0.02% 精选联盟数据扩展 (商家版): 11 0.06% 0.02% 谷歌recaptcha验证码: 11 0.06% 0.02% 淘系推广数据获取: 9 0.05% 0.02% 企业微信-服务端: 9 0.05% 0.02% POST文件上传: 9 0.05% 0.02% 快手扩展: 8 0.04% 0.02% 巨量纵横: 8 0.04% 0.02% 京东金融时间选择: 8 0.04% 0.02% 千牛扩展: 7 0.04% 0.01% 天猫字体解密扩展: 7 0.04% 0.01% 直播弹幕扩展: 6 0.03% 0.01% Matplotlib: 5 0.03% 0.01% 影刀离线NLP: 5 0.03% 0.01% AI拓展操作: 4 0.02% 0.01% 旺店通数据查询—旗舰版接口: 4 0.02% 0.01% WPS 多维表格: 4 0.02% 0.01% SSH 隧道: 4 0.02% 0.01% 万象隐藏: 4 0.02% 0.01% 京准通数据获取: 4 0.02% 0.01% 旺店通数据查询—企业版接口: 3 0.02% 0.01% 电商罗盘数据获取: 3 0.02% 0.01% 百度智能云指令: 3 0.02% 0.01% 巨量纵横通用时间选择: 3 0.02% 0.01% 批量数据抓取(Java): 2 0.01% 0.00% Hana数据库扩展: 2 0.01% 0.00% 淘宝直播数据获取: 1 0.01% 0.00% Canvas表格处理: 1 0.01% 0.00% 数电开票扩展(蒙柏): 1 0.01% 0.00% 大众点评解密操作: 1 0.01% 0.00% 阿普斯usb封装指令集: 1 0.01% 0.00%
In [100]:
# market_activity_map_robot_count 超过 1000个的指令集
print("引用超过 1000个应用的指令集")
activity_over_1000 = {k: v for k, v in market_activity_map_robot_count.items() if v > 1000}
for package_code, package_code_count in market_activity_map_robot_count.items():
if package_code_count < 1000:
continue
print(f"{market_activity_detail_data.get(package_code)}:\t{package_code_count}")引用超过 1000个应用的指令集 Excel扩展操作: 7887 列表扩展操作: 2460 日期时间扩展: 2181 网页扩展操作: 2125 登录扩展操作: 1870 弹窗智能侦测器: 1722 文件扩展功能: 1447 飞书电子表格(RPA): 1301 通用日期选择: 1205 数据库扩展操作: 1058
In [101]:
print("引用超过 100 - 1000应用的指令集")
activity_over_1000 = {
k: v for k, v in market_activity_map_robot_count.items() if v > 1000
}
for package_code, package_code_count in market_activity_map_robot_count.items():
if 100 < package_code_count < 1000:
print(f"{market_activity_detail_data.get(package_code)}:\t{package_code_count}")引用超过 100 - 1000应用的指令集 文本扩展功能: 984 XPath跨域获取网页元素: 867 滑块拼图验证码(免费): 815 个人微信: 782 并发调用子流程: 772 WPS 在线表格: 713 获取进程or杀进程: 701 应用帐号信息: 696 json数据提取: 684 紫鸟控制台操作: 649 图片扩展操作: 635 【付费】验证码识别(web): 579 飞书多维表格: 552 云码验证码扩展: 546 Cookie登录操作: 364 抖店操作: 359 数学函数操作: 321 钉钉在线表格操作: 320 懒加载操作: 282 SAP 扩展: 259 字典扩展操作: 253 拼多多数据获取: 253 MySQL扩展操作: 250 企业微信: 229 WPS 扩展: 224 钉钉云盘操作: 221 亚马逊卖家后台扩展操作: 214 计算机扩展: 210 Photoshop 操作: 181 钉钉机器人操作: 176 影刀离线OCR: 164 等待任意元素: 161 广告杀手: 160 消息推送: 159 PDF 扩展操作: 150 腾讯文档扩展: 137 动态调用: 135 (新版)生意参谋数据获取: 132 手机系统操作: 130 语音助手-edge-tts: 129 拼多多时间选择: 121 手机文件操作: 117 进度条扩展操作: 104
In [102]:
print("引用小于 100 应用的指令集")
activity_over_1000 = {
k: v for k, v in market_activity_map_robot_count.items() if v > 1000
}
for package_code, package_code_count in market_activity_map_robot_count.items():
if package_code_count < 100:
print(f"{market_activity_detail_data.get(package_code)}:\t{package_code_count}")引用小于 100 应用的指令集 鼠标扩展操作: 91 DataFrame表格扩展指令集: 90 京东商智扩展操作: 89 获取图表元素数据: 87 生意参谋常用操作: 76 Word 扩展: 76 万相台无界版: 73 浏览器扩展: 72 隐藏/显示浏览器窗口: 72 视频操作操作: 69 旺店通自定义操作: 68 Outlook 扩展操作: 67 抖音时间选择: 66 淘宝时间选择: 63 链接编码和解码: 60 罗盘.经营: 54 赤兔名品_时间选择: 50 Sqlite3 扩展操作: 48 翻译扩展操作: 48 生意参谋时间选择操作: 43 京东商智数据获取-商家版: 43 维格表操作: 40 HubStudio浏览器扩展操作: 39 软件(win)扩展: 35 天猫宝贝上架: 35 阿里妈妈多平台数据获取: 34 Sql Server 扩展: 33 断言: 31 二维码条形码: 30 PPT 扩展: 30 Redis 扩展: 29 免费OCR: 29 京东商智数据获取-品牌版: 29 打印机扩展: 28 异步下载图片: 27 唯品会指令集: 26 巨量千川: 25 京准通操作: 23 电子发票识别: 21 生意参谋扩展操作(win): 21 RAR解压缩操作: 21 汇率查询与转换: 20 物流信息分析: 20 紫鸟浏览器API: 18 PostgreSQL 扩展: 18 CSV扩展操作: 18 获取Windows凭据: 17 淘系推广时间选择: 15 引入指定应用python模块: 15 网银安全控件输入: 15 物流信息查询: 14 云码验证码扩展(win): 13 巨量百应数据扩展 (达人版): 12 京东商智数据获取-品牌店铺版: 12 Oracle 扩展操作: 11 飞鸽客服系统扩展: 11 云码验证码扩展(手机): 11 精选联盟数据扩展 (商家版): 11 谷歌recaptcha验证码: 11 淘系推广数据获取: 9 企业微信-服务端: 9 POST文件上传: 9 快手扩展: 8 巨量纵横: 8 京东金融时间选择: 8 千牛扩展: 7 天猫字体解密扩展: 7 直播弹幕扩展: 6 Matplotlib: 5 影刀离线NLP: 5 AI拓展操作: 4 旺店通数据查询—旗舰版接口: 4 WPS 多维表格: 4 SSH 隧道: 4 万象隐藏: 4 京准通数据获取: 4 旺店通数据查询—企业版接口: 3 电商罗盘数据获取: 3 百度智能云指令: 3 巨量纵横通用时间选择: 3 批量数据抓取(Java): 2 Hana数据库扩展: 2 淘宝直播数据获取: 1 Canvas表格处理: 1 数电开票扩展(蒙柏): 1 大众点评解密操作: 1 阿普斯usb封装指令集: 1
In [103]:
used_activity_data = df['extension_names'].explode().dropna().tolist()
used_market_activity_data = [
extension_name
for extension_name in used_activity_data
if any(key in extension_name for key in activity_code_keys)
]
print(f"总计使用市场自定义指令的数量: {len(used_market_activity_data)}")
print(f"使用市场指令在使用自定义指令应用的平均数: {len(used_market_activity_data)/used_market_activity_robot_count:.2f}")总计使用市场自定义指令的数量: 75642 使用市场指令在使用自定义指令应用的平均数: 4.00
In [104]:
# 对原始数据进行解析
used_market_activity_detail_data = []
for item in used_market_activity_data:
# print(item)
_, package_code, activity_code=item.split(".", 2)
used_market_activity_detail_data.append({"package_code": package_code, "activity_code": activity_code})In [105]:
# 通过 package_code 统计 activity_details 中的活动数量
from collections import Counter
# 汇总 package_code 数量
summary = Counter(item["package_code"] for item in used_market_activity_detail_data)
# 输出结果
result = dict(summary)
# 将结果按数量从大到小排序
sorted_result = summary.most_common()
print("自定指令使用的条数分析")
for package_code, package_code_count in sorted_result:
if package_code_count < 1000: continue
print(f"{market_activity_detail_data.get(package_code)}: {package_code_count}")自定指令使用的条数分析 Excel扩展操作: 23339 列表扩展操作: 4208 飞书电子表格(RPA): 3352 网页扩展操作: 2424 日期时间扩展: 2396 登录扩展操作: 2305 XPath跨域获取网页元素: 2075 弹窗智能侦测器: 2035 飞书多维表格: 1977 WPS 在线表格: 1949 文件扩展功能: 1675 数据库扩展操作: 1581 紫鸟控制台操作: 1503 通用日期选择: 1489 个人微信: 1302 SAP 扩展: 1114 文本扩展功能: 1104 钉钉在线表格操作: 1055 图片扩展操作: 1035
In [106]:
# 获取 activity_details中每一项 package_code 为activity_excel_v2 的item
activity_details_activity_excel_v2 = [item for item in used_market_activity_detail_data if item["package_code"] == "activity_excel_v2"]
# 根据 activity_code 统计数量
summary_activity_code = Counter(item["activity_code"] for item in activity_details_activity_excel_v2)
# 按顺序输出结果
sorted_summary_activity_code = summary_activity_code.most_common()
# 打印出来
for activity_code, used_market_activity_robot_count in sorted_summary_activity_code:
print(f"{activity_code}: {used_market_activity_robot_count}")C_01_筛选: 3463 A_01_单元格公式向下填充: 2857 D_03_查找数据所在行: 2230 C_03_清除筛选: 1864 C_05_删除筛选内容: 1710 C_04_读取筛选内容: 1661 B_02_内容替换: 1213 A_03_自动向下填充: 1211 D_02_查找数据所在列: 1209 B_04_区域文本转数字: 825 B_01_分列: 739 B_03_区域截图: 560 A_06_公式转换成值: 552 D_01_数字列名转换: 526 B_07_取消合并单元格: 398 A_04_单元格填充图片: 342 D_04_合成字典_列表拼接: 316 B_05_区域数字转文本: 285 A_02_单元格公式向右填充: 253 A_05_空白单元格填充: 185 D_12_冻结首行: 176 D_11_自动换行: 155 D_05_合成字典_数字累加: 91 C_02_筛选颜色: 75 B_14_获取合并单元格区域: 62 B_08_设置单元格超链接: 59 D_07_隐藏取消隐藏工作表: 58 D_06_删除所有图片: 48 B_10_导出单元格图片: 44 B_09_获取单元格超链接: 32 D_10_设置密码: 31 refresh_pivot_table: 28 B_11_删除单元格图片: 20 A_07_新建注释: 19 B_13_获取背景色: 14 D_08_获取隐藏的工作表名: 11 D_09_合并计算: 9 B_06_读取单元格注释: 6 D_13_设置切片器: 2
In [107]:
# 获取 activity_details中每一项 package_code 为activity_excel_v2 的item
activity_details_activity_excel_v2 = [
item
for item in used_market_activity_detail_data
if item["package_code"] == "activity_jfbym"
]
# 根据 activity_code 统计数量
summary_activity_code = Counter(
item["activity_code"] for item in activity_details_activity_excel_v2
)
# 按顺序输出结果
sorted_summary_activity_code = summary_activity_code.most_common()
# 打印出来
for activity_code, used_market_activity_robot_count in sorted_summary_activity_code:
print(f"{activity_code}: {used_market_activity_robot_count}")std_slider_captcha: 199 ali_slider_captcha: 110 dy_slider_captcha: 90 std_alphanum_captcha: 68 jd_rotate_captcha: 66 xhs_rotate_captcha: 47 jd_click_select_captcha: 45 std_trace_captcha: 44 std_click_select_captcha: 11 cs_word_order_click_select_captcha: 11 jd_click_select_captcha_original: 10 dy_double_rotate_captcha: 9 cs_space_same_object_captcha: 8 jd_trace_captcha: 6 chinatax_captcha: 4 ali_click_select_captcha: 3 cs_oocl_captcha: 3 cs_temu_captcha: 2 tx_six_squares_captcha: 2 orangebank_slider_captcha: 1