# 规则采集

对源站的规则采集有自动采集手动采集两种方式

# 自动采集

自动采集需要使用Tampermonkey脚本 — 磁力搜自动采集

打开浏览器的开发人员工具,进入到源站搜索页,右上角会多一个采集按钮,可以分析页面并在控制台打印出所有版本的解析规则。

自动采集已经包含大部分字段,部分字段(如:nameiconproxy等)还需根据实际情况手动调整。

如果自动采集的结果无法正常使用,那么就需要手动采集

# 手动采集

以磁力果为例,先定义源站信息

  • id  需要是整个规则文件唯一的,ciliguo
  • name 源站的名称,磁力果
  • url  首页地址,https://ciliguo.cc
  • icon 这里使用源站图标url,https://ciliguo.cc/favicon.ico
  • proxy 此源站需要代理,true
  • paths 获取到完整的搜索地址,将关键词页码替换为变量,去掉域名部分,作为默认排序,那么就是preset : /search?q={k}&p={p}

那么源站信息部分的JSON如下:

{
  "id": "ciliguo",
  "name": "磁力果",
  "url": "https://ciliguo.cc",
  "icon": "https://ciliguo.cc/favicon.ico",
  "proxy": true,
  "paths": {
    "preset": "/search?q={k}&p={p}"
  }
}

打开开发人员工具进入搜索页面,定位到单个条目的最外层节点,复制XPath得到//*[@id="__layout"]/div/div[1]/div[2]/div[1]/div/div[1],作为group的原始表达式

可以看到节点的classcard mb-4,那么可以优化为//div[@class=\"card mb-4\"],作为最终使用的group表达式

定位到名称节点,得到完整XPath//*[@id="__layout"]/div/div[1]/div[2]/div[1]/div/div[1]/div[1]/div[1]/a/span,但这里只需要名称部分,所以还需要删掉group的原始表达式,加上路径符./,那么name的表达式就是./div[1]/div[1]/a

其它字段也使用同样的操作获得

所以最终的规则如下:

{
  "id": "ciliguo",
  "name": "磁力果",
  "url": "https://ciliguo.cc",
  "icon": "https://ciliguo.cc/favicon.ico",
  "proxy": true,
  "paths": {
    "preset": "/search?q={k}&p={p}"
  },
  "xpath": {
    "group": "//div[@class=\"card mb-4\"]",
    "magnet": "./div[1]/div[2]/div/button[1]/@data-src",
    "name": "./div[1]/div[1]/a",
    "size": "./div[2]/div/div[1]/small[2]/span",
    "date": "./div[2]/div/div[1]/small[1]/span",
    "hot": "./div[2]/div/div[1]/small[3]/span",
    "detail": {
      "files": "//div[@class=\"card mt-4 mb-4 card-info\"]/div[2]/div[1]/div/div[1]/span"
    }
  }
}