恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

影刀RPA进阶教程:GraphQL API对接实战——新一代API的采集与写入

  • 首页
  • 资讯中心
  • /
  • 影刀RPA进阶教程:GraphQL API对接实战——新一代API的采集与写入

相关资讯

想给 Cloudflare OS 提 PR?先读懂它的小型 PR 门禁与预览部署安全模型 2026/10/20 1:40:42
MCP跨系统集成实践:当多个业务系统共享Agent能力时 2026/10/20 1:40:42
N_m3u8DL-RE 流媒体下载教程:5 分钟完成你的第一次 M3U8/DASH 下载(含加密解密与直播录制) 2026/10/20 1:40:42

最新资讯

数据团队做智能体:从仪表盘到能干活的数据闭环
DHOGSA模块:动态HOG感知自注意力机制如何助力YOLO26涨点
Delphi中FastReport使用Excel数据源实战:动态列与导出技巧
KUKA Router插件实战:配置、KRL调用与避坑指南
智慧边检空间智能平台:从视频感知到统一底座的建设实践
PySR项目中表达式模板与模型加载的兼容性问题解析

今日推荐

高频变压器实战经验总结:磁芯选型、绕组工艺与故障排查全解析
U-Boot移植的关键:深入理解Kconfig配置系统与依赖关系
步进电机原理与调试全解析:从步距角到丢步排查

本周热门

基于GMM的语音识别系统原理与MATLAB实现详解
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

影刀RPA进阶教程:GraphQL API对接实战——新一代API的采集与写入

发布时间:2026/10/20 1:40:42
影刀RPA进阶教程:GraphQL API对接实战——新一代API的采集与写入 影刀RPA进阶教程GraphQL API对接实战——新一代API的采集与写入REST要调3个接口拿仓库的star/fork/提交GraphQL一次搞定。影刀的HTTP请求指令直接发GraphQL请求Body选raw贴查询语句不用额外封装。模块5网页自动化——影刀发GraphQL请求的正确姿势影刀指令面板搜HTTP请求URL填https://api.github.com/graphqlMethod选POST。Headers加两条Authorization: Bearer ghp_你的token注意Bearer后面有空格Content-Type: application/json。Body选raw贴GraphQL查询。格式是{query: { viewer { login } }}query是固定字段名后面跟GraphQL语句。发送后响应在response.content里是JSON字符串用Json转字典指令解析取data字段。踩坑Content-Type必须写application/json写text/plain会返回400GitHub不认。踩坑Bearer后面的空格不能省直接贴Bearertoken会返回401鉴权失败。模块3变量与数据类型——GraphQL响应的数据结构GraphQL响应固定两层data和errors。成功时errors为空data里是你要的数据。字段名拼错不报错返回null。比如把stargazerCount写成stargazerCounts响应里这个字段就是null不报字段不存在。分页用pageInfo { hasNextPage endCursor }endCursor是下一页的游标传给after参数。变量用variables传查询里用$org: String!声明请求体写成{query: query($org: String!) { ... }, variables: {org: facebook}}影刀里用字符串拼接指令组装请求体或者先在Python里用json.dumps()转好再贴进去。模块4流程控制——遍历组织下所有仓库先用一个HTTP请求拿组织下的仓库列表GraphQL查询{ organization(login: facebook) { repositories(first: 10) { nodes { name stargazerCount forkCount } pageInfo { hasNextPage endCursor } } } }判断hasNextPage是否为true是的话把endCursor拼到下一次请求的after参数里。用循环指令套起来终止条件是hasNextPage false。每次循环把nodes里的数据追加到Excel用写入Excel行指令追加模式。踩坑first最大值100要拿更多就得分页别想着一次拿完500个仓库。踩坑endCursor是字符串传的时候要加引号after: Y3Vyc29yOn...这样写。模块9平台实战——GitHub GraphQL API采集实战案例采集facebook组织下所有仓库的name/stargazerCount/forkCount/最新提交时间一次请求拿完。完整GraphQL查询含嵌套的defaultBranchRef.target.history{ organization(login: facebook) { repositories(first: 100, after: $cursor) { nodes { name stargazerCount forkCount defaultBranchRef { target { ... on Commit { history(first: 1) { nodes { committedDate author { name } } } } } } } pageInfo { hasNextPage endCursor } } } }... on Commit是类型断言因为target可能是Commit也可能是Tag不写会报错。响应解析后defaultBranchRef.target.history.nodes[0].committedDate是最新提交时间。用字典取值指令逐层取data.organization.repositories.nodes是个列表每个元素是一个仓库的数据。模块9平台实战——Shopify GraphQL采集商品Shopify的GraphQL端点是https://你的店铺.myshopify.com/admin/api/2024-01/graphql.json。请求Header加X-Shopify-Access-Token: 你的token不用Bearer。查询商品{ products(first: 10) { edges { node { id title handle variants(first: 5) { edges { node { price inventoryQuantity } } } } } } }Shopify的GraphQL用edges和node包裹数据和GitHub直接返回nodes不一样注意区分。分页用pageInfo { hasNextPage endCursor }传给after参数格式和GitHub一样。踩坑Shopify的id是gid://shopify/Product/12345这种格式不是纯数字存数据库时要转成自己的ID。模块6数据处理——GraphQL响应的清洗和存储GraphQL响应是嵌套字典用Json转字典解析后逐层取值。写个Python脚本封装清洗逻辑影刀用执行Python指令调用importjsondefclean_graphql_response(raw_json):datajson.loads(raw_json)iferrorsindataanddata[errors]:returnNone,data[errors]reposdata[data][organization][repositories][nodes]result[]forrinrepos:latest_committry:latest_commitr[defaultBranchRef][target][history][nodes][0][committedDate]except:passresult.append({name:r[name],stars:r[stargazerCount],forks:r[forkCount],latest_commit:latest_commit})returnresult,None返回的result是列表每个元素是字典用循环指令逐行写入Excel。踩坑defaultBranchRef可能是null空仓库直接取会报错用try-except兜底。模块8进阶技能——GraphQL的调试技巧GraphQL的报错信息很模糊errors里的message只说Syntax Error不说哪行错了。用GraphiQL在线调试工具先跑通查询再贴到影刀里。GitHub的GraphiQL地址是https://docs.github.com/en/graphql/overview/explorer。fields字段太多会触发超时GitHub限制单请求响应不超过100KB用select只查需要的字段。变量用$声明查询里用($org: String!, $cursor: String)请求体里variables传值。影刀里用Python指令组装带变量的请求体importjsondefbuild_graphql_body(query,variables):returnjson.dumps({query:query,variables:variables})模块10系统联动——GraphQL数据写入数据库清洗完的数据写入MySQL用执行SQL指令先建表CREATETABLErepo_data(idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(255),starsINT,forksINT,latest_commitDATETIME);用循环指令遍历清洗后的数据列表每条执行一次INSERT。批量写入用executemany影刀的执行SQL指令支持批量参数传列表就行。踩坑GitHub的committedDate格式是2024-01-15T08:30:00ZMySQL的DATETIME不认T和Z用Python的datetime.strptime()转一下。模块11工程化与规范——GraphQL查询的封装和复用GraphQL查询语句很长直接贴影刀指令里不好维护存到配置文件.json里。用读取文件指令读配置文件取github_query字段传给HTTP请求的Body。不同平台的GraphQL查询格式不一样建一个queries.json{github_repos:query($org: String!, $cursor: String) { ... },shopify_products:query($first: Int!) { ... }}用Json转字典读进来按平台名取对应的查询语句。踩坑JSON里的字符串不能换行GraphQL查询要写在一行或者用Python的triple quote存多行字符串。模块2元素定位四合一——当GraphQL遇到网页鉴权有些GraphQL API需要先登录网页拿token用打开网页指令进登录页。用点击元素指令点登录按钮用填写输入框指令输账号密码用获取元素文本指令拿页面上的token。XPath定位//input[nameaccess_token]CSS选择器定位input[nameaccess_token]。拿到了token存到字符串变量后面HTTP请求的Header里用。踩坑token有有效期过期了要重新登录用条件判断指令检查响应状态码401就重新登录。模块7鼠标键盘图像自动化——GraphQL请求失败时的截图留痕HTTP请求返回非200时用截图指令截当前屏幕存到logs/目录文件名用时间戳。用执行Python指令调系统通知Windows用win10toastMac用plyer.notificationimportloggingfromdatetimeimportdatetimedeflog_error(response_text):timestampdatetime.now().strftime(%Y%m%d_%H%M%S)log_fileflogs/graphql_error_{timestamp}.txtwithopen(log_file,w)asf:f.write(response_text)logging.error(fGraphQL请求失败日志已保存到{log_file})失败超过3次用发送邮件指令告警收件人填你自己的邮箱。踩坑截图指令在头部运行模式下会截到黑屏用条件判断检查当前是否有活动窗口。模块12速查表/常见报错报错信息原因解决401 UnauthorizedBearer后面没加空格Bearer后面加空格400 Bad RequestContent-Type写错改成application/jsonfields返回null字段名拼错去GraphiQL里核对字段名Syntax Error查询语句格式错去GraphiQL里调试超时fields太多删掉不需要的字段GraphQL比REST省请求次数GitHub的REST API每小时限60次GraphQL算1次。分页用afterendCursor别用REST的page参数两个不一样。... on Commit是类型断言不写会报错因为接口返回的可能不是Commit类型。查询语句里的字符串用双引号单引号会报语法错。变量用$声明传值时在variables字段里给别直接拼到查询字符串里。home.linyan.cloud 有GraphQL实战相关的更多案例可以参考。内容标签影刀RPA GraphQL API对接 GitHub API采集 数据处理 网页自动化 变量与数据类型 流程控制 进阶技能 平台实战 系统联动 工程化与规范 常见报错作者林焱。到此为止

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号