{"record":{"id":"a5671d201a6f382a","repo":"fish2018/pansou","slug":"error-a5671d","errorCode":null,"errorMessage":"未找到搜索结果","messagePattern":"未找到搜索结果","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"plugin/xb6v/xb6v.go","lineNumber":314,"sourceCode":"\treader, err := p.getResponseReader(resp2)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdoc, err := goquery.NewDocumentFromReader(reader)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"解析搜索结果HTML失败: %w\", err)\n\t}\n\n\t// 提取搜索结果（详情页链接和日期）\n\tdetailPages := p.extractDetailURLs(doc)\n\n\tif p.debugMode {\n\t\tlog.Printf(\"[Xb6v] 找到 %d 个详情页链接\", len(detailPages))\n\t}\n\n\tif len(detailPages) == 0 {\n\t\treturn nil, fmt.Errorf(\"未找到搜索结果\")\n\t}\n\n\t// 限制结果数量\n\tif len(detailPages) > MaxResults {\n\t\tdetailPages = detailPages[:MaxResults]\n\t}\n\n\t// 并发获取详情页的磁力链接\n\tresults := p.fetchMagnetLinksFromDetails(client, detailPages, keyword)\n\n\t// 过滤空结果\n\tvalidResults := p.filterValidResults(results)\n\n\tif p.debugMode {\n\t\tlog.Printf(\"[Xb6v] 去除无链接结果后剩余 %d 个结果\", len(validResults))\n\t}\n\n\t// 插件层关键词过滤（必须执行，因为跳过了Service层过滤）","sourceCodeStart":296,"sourceCodeEnd":332,"githubUrl":"https://github.com/fish2018/pansou/blob/beaa56133755a548ebc51b090b3816e2ae044aa6/plugin/xb6v/xb6v.go#L296-L332","documentation":"xb6v's searchImpl extracts detail-page links from the parsed results page via extractDetailURLs (links inside ul#post_container). If zero detail links are found, it throws this error: the page loaded but contained no recognizable search results.","triggerScenarios":"The results page returned HTTP 200 and parsed fine, but the selector for ul#post_container anchor links matched nothing — an empty search, a 'no results' page rendered as 200, or the site's HTML structure changed so links no longer live in the expected container.","commonSituations":"Keyword genuinely has no results on the mirror; keyword optimization truncated a multi-word query to its first word, losing results; site redesign moved results out of ul#post_container; anti-bot served a soft block page with status 200.","solutions":["Try a different or shorter keyword to distinguish 'no results' from a parsing problem.","Enable debug mode and dump the results HTML to check whether post_container exists in the response.","Update extractDetailURLs selectors if the mirror's markup changed.","Check whether the site is soft-blocking (challenge page with 200) and use a different mirror or slower request rate."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"// pre-trim keyword; long multi-word queries get truncated to first word by xb6v\nkw := strings.Fields(keyword)\nif len(kw) > 0 { keyword = kw[0] }","typeGuard":null,"tryCatchPattern":"results, err := pluginSearch(keyword)\nif err != nil && strings.Contains(err.Error(), \"未找到搜索结果\") {\n\t// empty result set — not fatal; try other plugins or report 'no results' to user\n}","preventionTips":["Use single-word or short keywords; xb6v truncates at the first space.","Chain multiple search plugins so empty results from one fall through to others.","Distinguish 'no results' from 'blocked page' by checking for a soft-block before concluding."],"tags":["scraping","empty-results","html-parsing","site-change"],"backgroundTag":"empty-result-set","analyzedSha":"beaa56133755a548ebc51b090b3816e2ae044aa6","analyzedAt":"2026-09-07T00:31:18.025Z","contentChangedAt":"2026-09-07T00:31:18.025Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}