feapder icon indicating copy to clipboard operation
feapder copied to clipboard

新增:智能上下文管理功能(Feapder.Request() 中无需再手动传递参数)

Open ShellMonster opened this issue 2 months ago • 1 comments

功能概述

通过静态代码分析和运行时参数收集,实现回调函数之间的参数自动传递,解决多层回调中的参数传递难题; 用于支持多层parse函数时容易忘记传参,一直报错要排查的麻烦。

核心特性

  • 三种参数来源自动捕获(局部变量、request 属性、显式传入)
  • 两种传递模式(transitive 传递性模式、direct 直接模式)
  • 智能参数过滤(私有变量、特殊对象、大对象自动过滤)
  • 静态代码分析(启动时一次性分析,构建回调依赖图)

新增文件

  • feapder/utils/context_analyzer.py - 静态代码分析引擎
  • docs/usage/智能上下文管理.md - 完整使用文档
  • tests/test_smart_context*.py - 单元测试和压力测试
  • PR文档_智能上下文管理.md - PR 说明文档
  • 开发进度.md - 项目开发进度记录

修改文件

  • feapder/network/request.py - 新增参数自动继承逻辑
  • feapder/core/spiders/air_spider.py - 集成静态分析器
  • feapder/core/scheduler.py - 传递分析结果
  • feapder/core/parser_control.py - 注入分析结果
  • feapder/setting.py - 新增配置项
  • docs/_sidebar.md - 添加文档导航

配置项

  • SMART_CONTEXT_ENABLE: 智能上下文管理开关(默认 False)
  • SMART_CONTEXT_MODE: 传递模式(默认 "transitive")

ShellMonster avatar Nov 19 '25 18:11 ShellMonster

这个不是必须的功能,只是我每次嵌套比较多,老是容易忘要携带的参数,所以想到了搞这个,融进去麻烦就挂着吧😂

ShellMonster avatar Nov 20 '25 00:11 ShellMonster

有点复杂,脑子不够用了,不过传递大量参数时,我一般是透传item。每个paser拼接一部分item 层层向下传递,最终拼好后入库

Boris-code avatar Dec 16 '25 07:12 Boris-code