ptCMS小说网站编写采集规则教程正则教程

技术交流4年前 (2020)发布 liyugang
193 0

大家好! 我是 笨ヽ萧邪 今天我教大家 新版关关采集器的一些正则编写方法 因为是第一次做教程 所以我就先把
开头的一些废话 说下
好了 现在正式开始
第一步: 我们先复制一份原来的规则 做模板 比如说我今天演示的采集站点是 feiku 这个小说站点
那么我就把我复制的那份做模板的规则 命名为 feiku.xml 这个主要是便于记忆
第二步: 我们运行 采集器里的规则管理工具 打开后加载刚刚我们命名为 feiku.xml的这个XML文件
第三步: 开始正式编写规则了
1. RULEID(规则编号) 这个任意
2. GetSiteName(站点名称) 这里我们写 飞库网
3. GetSiteCharset(站点编码) 这里我们打开 www.feiku.com 查找 charset= 这个 =号后面的就是我们需要的站点编码
www.feiku.com 我们查到的 编码是 gb2312
4. GetSiteUrl(站点地址) 这个就不用我说了吧 写入 http://www.feiku.com/
5. NovelSearchUrl(站点搜索地址) 这个地址的获得 得按照每个网站程序的不同而言
不过呢有个通用的方法就是 通过抓包来获得自己想要的内容
虽然说是通过抓包来获得但是 怎么就知道获得的就是我们想要的呢
看我操作 首先我们运行封包工具 选择 IEXPLORE.EXE 这个进程 最好是你只开一个网站也就是你只 打开了 你要想编写规则的那个网站 确保进程里只有一个IEXPLORE.EXE这个进程
这里我们 我们可以 看到提交的地址是 /book/search.aspx 我们来组合一下 得到的地址 是 http://www.feiku.com/book/search.aspx
而提交 内容的代码是SearchKey=%C1%AB%BB%A8&SearchClass=1&SeaButton.x=26&SeaButton.y=10 但是对于我们有用的是 SearchKey=%C1%AB%BB%A8&SearchClass=1 这一段 这里获得的这段 将在NovelSearchData(搜索提交内容) 这里用到 把这段改成我们想要的代码就是 把这一段%C1%AB%BB%A8 替换成 {SearchKey} 这个 表示搜索提交的内容 完整的代码是 SearchKey={SearchKey}&SearchClass=1
然后我们测试下是否正确 经过测试 我们获得的内容是正确的
6. NovelListUrl(站点最新列表地址) 这个我就不说了 因为这些 每个站点的不同 这个就需要自己去找了 FEIKU 的是 http://www.feiku.com/Book/ShowBookList.aspx
7. NovelList_GetNovelKey(从最新列表中获得小说编号此规则中可以同时获得书名 获得书名是在手动模式的时候用到 如果你要用手动模式 那么必须获得书名 否则 手动模式将会无法使用)
我们 打开 http://list.feiku.com/book/showbooklist.aspx 这个地址 查看源文件
我们编写这个规则的时候 找到想要获得的内容所在的地方 比如 我们打开地址 看到 想要获得的内容的 第一本小说的 名字是 立地成魔 我们在源文件里面找到 莫伦特传

我们编写规则用到的代码其实也不是很多 我编写规则的原则是能省则省 也就是说代码 越短越好除非万不得已 一般精短一些比较好
好了不废话了 在这个规则里面 我们需要用到的是 立地成魔
我们将这段改下 (.+?) 其中 (\d*) 表示编号 (.+?) 表示 小说名 经过测试 正确
8. NovelUrl(小说信息页地址) 这个很容易 我们随便点开一本小说 就能知道了 比如说 http://www.feiku.com/Book/150557/Index.html 这本小说 我们可以看到的 我们改下 将里面的 150557 换成 {NovelKey} 一般情况表示小说编号 http://www.feiku.com/Book/{NovelKey}/Index.html
9. NovelErr(小说信息页错误识别标记) 这个 一般是 http://www.feiku.com/Book/149539/Index.html 吧 中间的 那个 编号随意改变下 比如 http://www.feiku.com/Book/15055799/Index.html 这样我们获得的错误标记就是 未找到该编号的书籍信息!
10. NovelName(获得小说名称正则) 我们随便打开一本小说 http://www.feiku.com/Book/149539/Index.html 查看源代码 获得小说名称 这个我们可以从固定模式着手 比如我们刚才打开的 立地成魔 这本小说 我们看到他的固定小说名格式是 《立地成魔》 那我们在源代码里 找到 《立地成魔》 这个 我们得到的内容是

《立地成魔》

这一段 我们改下

《(.+?)》

下面的 NovelAuthor(获得小说作者) LagerSort(获得小说大类) SmallSort(获得小说大类) NovelIntro(获得小说简介) NovelKeyword(获得小说主角(关键字)) NovelDegree(获得写作进程)
NovelCover(获得小说封面) 这些呢 我就不演示了 这些跟上面的那个获得小说名 方法是一样的 也就所谓的一通百通
这里有些时候获得的内容里面有些不想用到的 因为格式不固定有些内容只能先获得然后在用过滤功能 过滤掉 过滤的用法 在后面有说
11. NovelInfo_GetNovelPubKey(获得小说公众目录页地址)
这个的地址获得跟上面的一样的方法 这里我就不说明了
12 PubIndexUrl(公众目录页地址) 这个我说明一下 这个的用法 这个一般是在 知道 采集目标站的动态地址的时候用到 如果不知道对方动态地址的话 就在这个里面写入{NovelPubKey} 如果 知道动态路径
比如说 http://www.feiku.com 这个站的没本小说的章节目录的动态地址是 http://www.feiku.com/Book/149539/Index.aspx 那么 PubIndexUrl 这个的规则就是 http://www.feiku.com/Book/{NovelKey}/Index.aspx
13. PubVolumeSplit(分割分卷) 这个分割分卷 有写地方需要注意到 如果分割分卷的正则没对 那么有可能 对于下面的 获得章节名那些有很大的影响 这里 我们获得 分割部分的代码呢 按我的经验呢 是找到第一个 分卷 跟下面的分卷 查看他们的共同处 在我们分析 http://www.feiku.com/html/book/130/149539/List.shtm 这个目录章节里面的源代码 可以看出他们有个共同点 拿这一段来说明下

力量的追求  
    从这里我们可以看到他的共同点 是

我们吧他改下改成正则格式

\s*

其中的\s* 表示 匹配 与任何白字符匹配,包括空格、制表符、分页符等 也就是说 在

之间 不管有多少个空格 都可以用 \s* 来表示
14 . PubVolumeName(获得分卷名) 想要获得准确的分卷名 必须在上面的 分割部分的正则必须正确
一般情况下 分割部分 跟 分卷名是在一块的 上面我们说明分割部分用到的

力量的追求  
© 版权声明

相关文章

暂无评论

暂无评论...