Skip to content

搜索规则 (ruleSearch)

定义如何从搜索结果页提取书籍列表。ruleExplore 结构与它相同。

规则字段

json
{
  "ruleSearch": {
    "checkKeyWord": "",
    "bookList": "",
    "name": "",
    "author": "",
    "intro": "",
    "kind": "",
    "lastChapter": "",
    "updateTime": "",
    "wordCount": "",
    "coverUrl": "",
    "bookUrl": ""
  }
}

字段说明

字段必需说明
checkKeyWord当前主要用于调试接口默认关键词,不参与搜索结果校验
bookList书籍列表规则,支持 CSS / JSONPath / XPath / Regex / JS
name书名选择器
author作者选择器
intro简介
kind分类/标签
lastChapter最新章节
updateTime更新时间
wordCount总字数
bookUrl书籍详情页链接
coverUrl封面图片 URL

示例

CSS 选择器示例

json
{
  "searchUrl": "/search?wd={key}&page={page}",
  "ruleSearch": {
    "bookList": ".search-list li",
    "name": "h3 a@text",
    "author": ".author@text##^作者[::]?##",
    "bookUrl": "h3 a@href",
    "coverUrl": "img@src",
    "intro": ".intro@text",
    "wordCount": ".words@text",
    "lastChapter": ".latest@text",
    "updateTime": ".updated@text"
  }
}

JSON API 示例

json
{
  "searchUrl": "https://api.example.com/search?q={key}&page={page}",
  "ruleSearch": {
    "bookList": "$.data.books",
    "name": "title",
    "author": "author",
    "bookUrl": "https://example.com/book/{{id}}",
    "coverUrl": "cover",
    "lastChapter": "latestChapter"
  }
}

正则列表示例

json
{
  "ruleSearch": {
    "bookList": ":<a href=\"([^\"]+)\">([^<]+)</a>",
    "bookUrl": "$1",
    "name": "$2"
  }
}

JS 列表示例

json
{
  "ruleSearch": {
    "bookList": "js:[{ name: '演示书', author: '作者', bookUrl: '/book/1' }]",
    "name": "name",
    "author": "author",
    "bookUrl": "bookUrl"
  }
}

当前实现说明

  • bookList 支持前缀 -+
  • -bookListRule:结果反转
  • +bookListRule:显式保持原顺序
  • bookUrlcoverUrl 返回相对路径时会自动补全为绝对 URL
  • HTML 搜索当前仍建议把 bookList 视为必填
  • 如果搜索结果为空、且未配置 bookUrlPattern,当前实现会尝试把当前页面按 ruleBookInfo 当作详情页回退解析