xpzouying/xiaohongshu-mcp · error
「%s」里没有选项「%s」,页面上是:%s
Error message
「%s」里没有选项「%s」,页面上是:%s
What it means
findFilterOption 在目标分组内遍历所有 div.tags 选项文本,没有与 pf.option 精确匹配的项:筛选值非法或与页面文案不一致,错误中列出页面上实际可选项(顿号分隔)供纠正输入。
Source
Thrown at xiaohongshu/search.go:244
options, err := group.Elements("div.tags")
if err != nil {
return nil, fmt.Errorf("读取「%s」的选项失败: %w", pf.group, err)
}
var available []string
for _, opt := range options {
t, err := opt.Text()
if err != nil {
continue
}
t = strings.TrimSpace(t)
if t == pf.option {
return opt, nil
}
available = append(available, t)
}
return nil, fmt.Errorf("「%s」里没有选项「%s」,页面上是:%s",
pf.group, pf.option, strings.Join(available, "、"))
}
return nil, fmt.Errorf("筛选面板里没有「%s」这一组", pf.group)
}
func makeSearchURL(keyword string) string {
values := url.Values{}
values.Set("keyword", keyword)
values.Set("source", "web_explore_feed")
//https://www.xiaohongshu.com/search_result?keyword=%25E7%258E%258B%25E5%25AD%2590&source=web_search_result_notes
//https://www.xiaohongshu.com/search_result?keyword=%25E7%258E%258B%25E5%25AD%2590&source=web_explore_feed
return fmt.Sprintf("https://www.xiaohongshu.com/search_result?%s", values.Encode())
}
View on GitHub (pinned to 332d196854)
Solutions
- 按错误信息中「页面上是:」列出的实际选项修正传入的 option 字符串
- 升级库版本获取最新的筛选枚举值
- 避免硬编码选项文本,使用库提供的常量/枚举(如有)
Example fix
// before
pf := pendingFilter{group: "排序", option: "按时间排序"}
// after(错误信息提示页面是:综合、最新、最热)
pf := pendingFilter{group: "排序", option: "最新"} Defensive patterns
Strategy: validation
Validate before calling
var validOptions = map[string][]string{
"排序": {"综合", "最新", "最热"},
"筛选": {"图文", "视频"},
}
if !contains(validOptions[pf.Group], pf.Option) {
return fmt.Errorf("选项 %q 不在组 %q 的已知列表中", pf.Option, pf.Group)
} Type guard
func isValidFilterOption(group, option string) bool {
for _, g := range knownGroups() {
if g.name == group && contains(g.options, option) { return true }
}
return false
} Try / catch
res, err := client.Search(ctx, q)
if err != nil {
var available string
if i := strings.Index(err.Error(), "页面上是:"); i >= 0 {
available = err.Error()[i+len("页面上是:"):]
}
return fmt.Errorf("筛选参数错误,可用选项: %s", available)
} Prevention
- 不要硬编码选项文本,使用库的常量/枚举
- 从错误信息的「页面上是:」回读实际可用值
- 关注小红书前端改版导致的文案变更
- 选项文本比较前做 TrimSpace
When it happens
Trigger: Search 的 pendingFilter 配置中 option 字符串与页面上实际展示的选项文本不一致,例如传「视频号」而页面只有「视频」,或传英文/含空格文本。
Common situations: 小红书改版调整了选项文案(如「最新」改「最新笔记」);调用方硬编码了过期选项名;大小写/全半角差异;该筛选组在某些类目下不提供该选项。
Related errors
AI-assisted analysis of xpzouying/xiaohongshu-mcp@332d196854 (2026-09-05).
Data as JSON: /api/errors/d1c3d02fe98bdc4d.
Report an issue: GitHub.