乐于分享
好东西不私藏

WPS官方文档一万两千篇文档,四分钟采完

WPS官方文档一万两千篇文档,四分钟采完
准备开发WPS的JSA宏和WPSJS加载项的skill,先把文档采集下,之前采集过的文档过时了,结果还不错,尝试用了下WPS灵犀来搞,全程AI帮我做好了,包括以下的文章帮我总结好过程分享。

一万两篇文档,四分钟采完

—— WPS 开放平台文档逆向采集实战手记

从浏览器自动化到 JSON API 逆向,一场「笨办法」到「聪明办法」的进化之旅。


引子:一个「简单」的需求

最近在研究 WPS 的 JSA(JavaScript API)开发,需要频繁查阅 WPS 开放平台的官方文档。文档地址是 open.wps.cn,内容很全——加载项 API、宏编辑器 API、表格 API、文字 API、演示 API……应有尽有。

但问题来了:

  • 每次查资料都要联网,网络不稳定时就抓瞎
  • 文档没有离线版本,想本地全文搜索 impossible
  • 侧边栏导航层层嵌套,找一个具体方法要点好几下
  • 想批量分析 API 命名规律、参数模式,只能手动一页页复制

于是我萌生了一个想法:把整棵文档树的页面全部采集下来,存成本地文件,想怎么搜就怎么搜。

听起来不难,对吧?但实际操作中,我经历了一段从「笨办法」到「聪明办法」的完整进化。今天就把这个过程分享出来,希望能帮到有类似需求的朋友。


一、笨办法:浏览器自动化采集 HTML

最直觉的方案是模拟浏览器操作:打开网页,展开侧边栏导航树,逐个点击叶子节点,提取页面正文内容保存。我用的工具是 CDP(Chrome DevTools Protocol)浏览器自动化。

1.1 打开页面,分析结构

首先导航到文档首页,用 JavaScript 提取侧边栏 DOM 结构。很快发现这是一个 Vue SPA(单页应用),侧边栏导航是动态渲染的。

1.2 展开 12000+ 个折叠节点

真正的噩梦开始了。侧边栏是一棵多级树,默认只展开第一层。每个父节点都需要点击才能展开子节点,而子节点展开后又会冒出新的折叠节点。

我写了个循环:每轮找到所有折叠的三角形图标(CSS class 包含 -rotate-90),全部点击展开,等 0.5 秒渲染完,再找下一批。

执行过程大概是这样的:

轮次
点击展开数
已发现链接数
第 1 轮
12 个
2 个
第 50 轮
20 个
316 个
第 200 轮
20 个
1,267 个
第 400 轮
36 个
2,284 个
……
……
……

问题在于:每次点击后 Vue 会异步渲染,新展开的节点需要时间才能出现在 DOM 中。而且展开过的节点有时会自动折叠回去(可能是 Vue 的响应式更新导致的状态丢失)。

我跑了 200 多轮循环,花了十几分钟,才展开到 2000 多个链接。而根据估算,整棵树有超过 12000 个叶子节点。照这个速度,光展开导航树就要一个小时。

1.3 提取到的链接也不完整

更让人崩溃的是,即使节点展开了,由于 Vue 的虚拟 DOM 机制,折叠状态下的子节点链接根本不在 DOM 中——它们是懒加载的,只有展开时才会创建。

这意味着:不把所有节点展开到叶子层级,就拿不到完整的链接列表。而展开所有节点又极其耗时且不稳定。

到了这一步,我意识到:浏览器自动化方案行不通。 不是为了采集内容,光是把导航树完整展开就要花费不可接受的时间。


二、转折:一条 Network 请求改变了一切

正当我准备放弃的时候,灵光一闪:既然页面是通过 AJAX 请求加载数据的,那为什么不直接看它请求了什么?

我用 Performance API 列出了页面加载时的所有网络请求,过滤掉 JS、CSS、图片等静态资源后,发现了两个关键的 JSON API 请求:

请求 URL
作用
/docs/api/collections/client?lang=zh
返回完整侧边栏导航树
/docs/api/doc/{doc_id}?lang=zh&source=local
返回单个页面的 Markdown 原文

用浏览器直接访问第一个 API,返回了一个 8MB 的 JSON。里面就是整棵导航树——所有节点、所有层级、所有链接,一次性全部返回。

那一刻,我的心情可以用四个字形容:豁然开朗。

2.1 导航树 API

请求地址:

GEThttps://open.wps.cn/docs/api/collections/client?lang=zh

返回的是一个嵌套的 JSON 树结构,每个节点包含:

  • name:节点显示名称(如"表格 API 参考")
  • type:节点类型(folder 或 file)
  • path:页面路径
  • children:子节点数组(folder 类型才有)
  • docInfo:文档元信息(file 类型才有),其中 id 字段是内容 API 的关键参数

整棵树长这样(简化版):

{"name": "WPS Office 基础接口",  "type": "folder",  "children": [    {      "name": "表格 API 参考",      "type": "folder",      "children": [        {          "name": "Workbook 对象",          "type": "file",          "docInfo": {            "id": "app-integration-dev_..._Workbook_obj",            "breadcrumb": ["WPS客户端二次开发", "WPS Office 基础接口", "表格 API 参考", "Workbook 对象"]}}]}]}

2.2 内容 API

拿到每个叶子节点的 docInfo.id 后,就可以请求内容了:

GEThttps://open.wps.cn/docs/api/doc/{doc_id}?lang=zh&source=local

返回内容更让人惊喜:data.content 字段直接就是 Markdown 原文!不需要解析 HTML,不需要正则提取正文,拿到的就是干净的 Markdown。

这意味着:我最初计划先采集 HTML 再转换格式的方案完全是多此一举。API 返回的就是最原始的 Markdown,直接保存即可。


三、秒杀:从一小时到四分钟

有了两个 API,采集逻辑变得极其简洁:

1. 调用导航树 API,递归遍历 JSON 树,提取所有 type=file 的叶子节点

2. 对每个叶子节点的 docInfo.id,调用内容 API 获取 Markdown

3. 按导航树层级创建文件夹,保存 .md 文件

3.1 多线程并发下载

单线程逐个请求太慢(12000 个页面,每个请求约 0.2 秒,串行需要 40 分钟)。用 Python 的 ThreadPoolExecutor 开 20 个线程并发请求,整体耗时降到 4 分钟左右。

核心代码逻辑(简化版):

from concurrent.futures importThreadPoolExecutorwithThreadPoolExecutor(max_workers=20)asexecutor:    futures ={executor.submit(fetch_and_save, doc_id): doc_idfor doc_id in all_doc_ids}for future inas_completed(futures):        doc_id, saved, errors = future.result()        total_success += saved

3.2 文件命名与目录结构

为了让采集结果方便检索,我按导航树的第二级节点创建子文件夹,文件名包含完整树路径。

例如面包屑为 ["WPS客户端二次开发", "WPS Office 基础接口", "加载项 API 参考", "自定义功能区", "自定义功能区概述"] 的页面,保存为:

WPSOffice 基础接口/加载项 API 参考/加载项 API 参考_自定义功能区_自定义功能区概述.md

这样想找表格相关的内容,直接进"表格 API 参考"文件夹即可。

3.3 Windows 文件名大小写陷阱

采集过程中遇到一个小坑:Windows 文件系统不区分大小写,而 WPS 文档中存在大小写不同的同名节点(如 ffi 和 FFI)。两个文件名在 Linux 上是不同的文件,在 Windows 上会冲突覆盖。

解决方案很简单:检测到文件名(转小写后)重复时,自动在文件名后加序号后缀。

3.4 最终成果

采集结果汇总:

顶级节点
文件数
占比
WPS Office 集成模式
43
0.4%
WPS Office 基础接口
12,140
99.6%
合计12,183100%

"WPS Office 基础接口"下的各子模块分布:

子模块
文件数
占比
文字 API 参考
4,267
35.2%
表格 API 参考
4,095
33.8%
演示 API 参考
1,761
14.5%
通用 API 参考
861
7.1%
宏编辑器控件 API 参考
397
3.3%
PDF API 参考
275
2.3%
加载项 API 参考
267
2.2%
宏编辑器 API 参考
144
1.2%
WPS 扩展 API
69
0.6%
其他
104
0.9%

全部 12,183 个文件,总大小约 70MB,采集耗时 216 秒,0 错误。


四、原理:为什么 API 比浏览器自动化快 100 倍

4.1 浏览器自动化的瓶颈

浏览器自动化(Selenium、Puppeteer、CDP 等)的本质是模拟人类操作:点击、等待渲染、读取 DOM。每一次操作都有固定开销:

  • 渲染延迟:Vue/React 等框架收到状态变更后,需要异步执行虚拟 DOM diff 和 patch,通常需要 100-300ms
  • 网络往返:每次导航到新页面都要重新加载 HTML、CSS、JS,执行框架初始化
  • 状态管理:SPA 的导航状态(展开/折叠)保存在内存中,操作过快会导致状态丢失或回滚
  • DOM 查询:在复杂页面中通过 CSS 选择器定位元素也有性能成本

对于几十个页面来说,这些开销可以忽略。但当页面数量达到上万级别时,每个页面多花 1 秒,总量就是好几个小时。

4.2 API 直调的优势

API 直调绕过了所有中间环节:

  • 导航树 API 一次返回全部 12000+ 个节点的完整结构,不需要逐层展开
  • 内容 API 直接返回 Markdown 原文,不需要渲染 HTML 再解析提取
  • HTTP 请求可以轻松并发(20 线程),而浏览器自动化受限于单线程操作序列
  • 没有渲染开销,没有状态管理问题,纯粹的请求-响应模式

打个比方:浏览器自动化像是从北京坐绿皮火车去广州,每站都停;API 直调像是坐直达高铁。目的地一样,但效率天差地别。

4.3 如何发现 API

很多人觉得「逆向 API」听起来很高深,其实方法非常朴素:打开浏览器 DevTools,看 Network 面板。

具体步骤:

1. 用 Chrome 打开目标页面,按 F12 打开 DevTools

2. 切换到 Network 面板,勾选 Fetch/XHR 过滤器

3. 刷新页面,观察加载时的请求列表

4. 在侧边栏点击任意导航项,观察新触发的请求

5. 寻找返回 JSON 且包含文档内容的请求

6. 用 Python requests 直接调用该 API 验证

90% 的现代 Web 应用都有类似的 JSON API。学会这个方法,采集效率可以提升一到两个数量级。


五、经验总结

5.1 先观察,再动手

这次采集最大的教训是:动手写代码之前,先花 5 分钟观察目标网站的请求模式。我一开始直接上浏览器自动化,折腾了好几个小时才发现根本不需要这么复杂。如果先看 Network 面板,5 分钟就能发现 API。

5.2 SPA 网站的采集策略

现代 Web 应用几乎都是 SPA(单页应用),直接爬 HTML 拿不到完整内容。但 SPA 必然依赖后端 API 提供数据,找到 API 就找到了金矿。判断一个网站是否值得用 API 采集,看两点:

  • Network 面板中是否有返回 JSON 的 XHR 请求
  • 这些 JSON 是否包含你需要的数据(文本、链接、结构等)

5.3 并发是关键

Python 的 requests 库本身是同步的,但配合 ThreadPoolExecutor 可以轻松实现并发。对于 IO 密集型任务(网络请求),线程池的效果非常显著。20 个并发线程可以将 12000 个页面的采集时间从 40 分钟压缩到 4 分钟。

5.4 文件名设计很重要

采集上万个文件时,文件命名策略直接决定了后续的检索效率。我的做法是:

  • 按导航树第二级分类建子文件夹(表格、文字、演示等)
  • 文件名包含完整面包屑路径,用下划线连接
  • 这样即使在文件管理器中浏览,也能一眼看出文档的层级位置

5.5 留下可复用的脚本

网站改版是常态,API 可能随时失效。我把采集脚本和 API 发现指南一起沉淀成了可复用的工具,以后网站改版时只需要重新排查 API 地址,更新脚本中的 URL 常量即可。


写在最后

这次采集经历让我深刻体会到:解决问题的最高境界不是把笨办法优化到极致,而是找到那个让笨办法变得不必要的聪明办法。

12000 个文档,如果用浏览器自动化逐个采集,可能需要好几个小时甚至一天。而找到 API 后,4 分钟全部搞定。这中间的差距不在于代码能力,而在于对问题本质的理解。

下次遇到类似的采集需求,不妨先问自己一个问题:这个网站的数据,背后是什么 API 在支撑?

找到它,你就赢了一半。


本文涉及的采集脚本已开源,关注公众号回复「WPS采集」获取完整代码。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-23 05:09:59 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/865573.html
  2. 运行时间 : 0.163063s [ 吞吐率:6.13req/s ] 内存消耗:4,856.26kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c3892887136b9566cc9334e640f85ecd
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000579s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000813s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001305s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.011457s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000529s ]
  6. SELECT * FROM `set` [ RunTime:0.000204s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000730s ]
  8. SELECT * FROM `article` WHERE `id` = 865573 LIMIT 1 [ RunTime:0.003550s ]
  9. UPDATE `article` SET `lasttime` = 1784754599 WHERE `id` = 865573 [ RunTime:0.028210s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.005447s ]
  11. SELECT * FROM `article` WHERE `id` < 865573 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001786s ]
  12. SELECT * FROM `article` WHERE `id` > 865573 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000465s ]
  13. SELECT * FROM `article` WHERE `id` < 865573 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.026297s ]
  14. SELECT * FROM `article` WHERE `id` < 865573 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001837s ]
  15. SELECT * FROM `article` WHERE `id` < 865573 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005601s ]
0.164788s