运行环境:CentOS7+Nginx 1.19+PHP7.3+MySQL AliSQL
程序源码:PTCMS_V4.3.0(Build 20200910)
注:本教程只讲解采集规则,程序源码以及如何安装请“百度一下”。
官方帮助文档https://www.ptcms.com/doc/index.html
常用正则表达:
'[内容]' => '(.*?)',就是我们需要获取的东西
'[数字]' => '\d*',这是纯数字
'[空白]' => '\s*',这是用在换行的地方,包括换行、空格、\r \n
'[任意]' => '.*?',这就是任意字符
'[参数]' => '[^\>\<]*?',这是html代码中的参数 如alt="标题"
这样的
'[属性]' => '[^\>\<\'"]*?',这是html代码中参数的属性 对于上述例子中的alt="标题"
,可以代替标题
注:如果想要获取内容就需要在正则表达示外加括号(英文状态下的),比如(.*?) 、(\d*),括号同时只能存在一个。
以https://www.txtbook.org/shuku/0_all_0_0_0_0_2_0_1.html为例讲解
一、添加站点
二、采集规则详细步骤
1、添加规则(规则管理-->添加);
2、规则名称根据实际情况填写;
3、所属站点选择上面添加的;其它默认就可以。
5、更新列表规则
1 2 3 4 5 |
https://www.txtbook.org/shuku/0_all_0_0_0_0_2_0_1.html 第1页 https://www.txtbook.org/shuku/0_all_0_0_0_0_2_0_2.html 第2页 https://www.txtbook.org/shuku/0_all_0_0_0_0_2_0_3.html 第3页 ……………… https://www.txtbook.org/shuku/0_all_0_0_0_0_2_0_99.html 第99页 |
通过分析得出如下规则
1 2 3 |
https://www.txtbook.org/shuku/0_all_0_0_0_0_0_0_[page].html 系统中[page] 表示多页页码 |
6、小说名称
1 2 3 4 5 6 7 8 |
<ul> <li class="one">1</li> <li class="two">[玄幻奇幻]</li> <li class="three"><a href="https://www.txtbook.org/book/13887/" target="_blank">《你们练武我种田》txt下载</a><span class="gray"><a href="/read/13887/14529389.html" target="_blank" title="第四百七十八章:传播武道">第四百七十八章:传播武道</a></span></li> <li class="four"><a href="/author/%B0%A5%D3%B4%B0%A1" target="_blank" rel="nofollow">哎哟啊</a></li> <li class="five">连载中</li> <li class="six">2020-12-22 15:20</li> </ul> |
根据“唯一”原则找到
1 |
<li class="three"><a href="https://www.txtbook.org/book/13887/" target="_blank">《你们练武我种田》txt下载</a><span class="gray"> |
分析这段代码获取我需要的数据,写规则;
方法一:
1 |
<li class="three"><a href=".*?" target="_blank">《(.*?)》txt下载</a><span class="gray"> |
方法二:
1 |
<li class="three"><a href=".*?" target="_blank">(.*?)txt下载</a><span class="gray"> |
这两种方法的区别在于方法需要替换掉《》,我用了方法二。
7、小说书号
分析代码
1 |
<li class="three"><a href="https://www.txtbook.org/book/13887/" target="_blank">《你们练武我种田》txt下载</a><span class="gray"> |
规则
1 |
<li class="three"><a href="https://www.txtbook.org/book/(\d*)/" target="_blank">.*?</a><span class="gray"> |
\d* 表示纯数字,(\d*)表达我们要获取这里数字。
8、信息页地址
根据URL分析,是https://www.txtbook.org/book/+书号。
在官方教程文档中有相应的参数,
[subnovelid] == 分类ID
[novelid] == 小说ID
[chapterid] == 章节ID
8、小说名称、小说作者、小说封面、小说分类、小说简介、小说进度
这些规则都很好找不再多写,直接看下面图片。主要说一下小说进度,也是这次为什么用这个网站作为案例讲解的原因。
在源代码查到不到连载,通过小说图片左上角的“连载中”小图标找到代码
1 |
<div class="novel_status" data-status="1"></div> |
再找一本完结的小说对比一下
1 |
<div class="novel_status" data-status="2"></div> |
然后我们获取1、2再进行规则替换
9、通过上面学习之后,章节以及内容就很容易写了。
文章评论
过来学习一下,之前一直想找这个找不到!感谢分享了!