[P语言] 普乐P语言入门及示例
如果把网页源代码想象成是妈妈织的毛衣,那么p语言就是钩针。只要我们懂一些语法代码或编程基础,那么就可以使用p语言。如其他编程语言一样,P语言也要遵循语言格式,否则写错了就获取不到结果。所以童鞋们学习p语言需要有点小耐心哦。:)
p语言所获取的代码,如在正文代码条目中的p语言代码片段,保存后,经过正文代码过滤(过滤网页代码),经过过滤规则区,输出为最终结果。所以需要注意数据处理的顺序。
补充:普乐软件2354升级了并简化了采集规则p语言处理,可以对任意上一步获取内容进行p语言处理,返回值统一用$m_return表示,详情请见第六个示例,以前的用法仍然有效,
举个简单的例子,格式如下
1.void main(void)
2.{
3.int tem; // 定义tem为整数型
4.cstr tep; //定义tep为字符型
5.tem = 10; //tem 赋值 10
6.tep = $m_url; //tep 赋值为当前网页的网址
7.$m_ncontent = tep + tem; // 获取正文为网址+10
8.}
复制代码
注意,因为$m_ncontent 是全局变量“文章内容”,所以这段代码一般应该写在规则编辑器--正文代码里面,如果写到其他地方“作者、类型、头像、自定义”会干预到正文的最终结果;
同理,如果写成下面这样,一般则表示获取获取地址,包括:下一页地址,下一正文页地址,登录地址,退出地址,注册地址,对应规则编辑器--地址关键词里面。
1.void main(void)
2.{
3.int tem;
4.cstr tep;
5.tem = 10;
6.tep = $m_url;
7.$m_pageurl = tep + tem;
8.}
复制代码
以上2个例子,可以了解p语言的格式和适用范围,每句命令最后必须要有分号,目前暂不支持在同时混用规则代码和p命令,比如在下一页地址里面设置如下代码是错误的:
1.>下一页< //规则解释器命令,以下是p语言片段
2.void main(void)
3.{
4.int tem;
5.tem = 10;
6.$m_pageurl = tem;
7.}
复制代码
。
p语言,简单说就是用相关的命令,来对源代码进行深加工,理论上可以做任何关于网页的处理。
继续简单讲解一下,
1.这边列出p语言的部分全局变量(只读):
2.$m_user: 要登录/注册的用户名
3.$m_password: 要登录/注册的密码
4.$m_url: 正在处理的网页地址
5.$m_html: 正在处理的网页内容
6.$m_webtitle: 正在处理的网页title
7.$m_ref: 转入链接
8.$m_region: 采集网页的有效区域
9.$m_cunit: 采集网页的单元区域
10.$m_nlayer: 获取的文章楼层数
复制代码
如果在正文里面使用p语言,可以引用其他全局变量区域(除了正文区域,因为会自循环),比如
1.tep = htmltext($m_region); //表示给 tep 这个变量赋值有效区域所有显示文字
2.tep = strreplace(tep, "点击查看联系方式", gethtml(url)); //表示替换tep里面,点击查看联系方式,
为gethtml(url)所代表的字符
复制代码
可以看出p语言很灵活,支持无限赋值,子函数嵌套,if判断,while, >, <, ==, !=,&&, ||等,上面gethtml(url),表示获取url这个网址网页里面的内容,当然如果对应网页普乐软件无法识别,还需要自编规则。注意:目前仅gethtml(不支持嵌套子函数)。注意,\ ' " 这3个字符需要用反斜杠\ 转义后,才能表示原来的字符(单引号可以不转)。
================================================================== 以下整理p语言应用范例:
1.
1.https://www.doczj.com/doc/147514452.html,/skincare/2011-04-28/L0003002001_842231_1.html
复制代码
这个网页文章最后一页,会转到另外的文章,造成无法正常采集单篇多页的一个主题。
可以在制作的正文“采集规则--正文下一页关键词代码”中用p语言来判断获取下一页地址,避免跳转到其他文章。代码如下
1.void main(void)
2.{
3.cstr nex; //定义字符变量nex
10.
11.
12.while (strfind($m_region,htmlimg1($m_region,"num1) //在第一图片地址 160个
字符后(需要自己测试寻找最好的间隔数值),寻找第二图片地址,并且当后一个图片地址大于前一个图片地址,如
果寻找不到第二图片地址,即值为空,循环结束
13.{
14.img1 = img1 +""; //img1 字段循环格式化增量赋值
15.num1=strfind($m_region,htmlimg1($m_region,"
址便于循环
16.//msgbox(num1); 这句利用2个反斜杠作为注释,msgbox可以在确定保存当前条目后弹框显示
测试值,测试num1的数值,其他变量也可以这样测试
17.}
18.$m_ncontent=img1+cont1; //合并图片和下载地址
19.}
复制代码
4. https://www.doczj.com/doc/147514452.html,/job/2009-12/307837.htm, 这个网页有一部分隐藏内容需要点击后才能看全,是post提交方式的,同样也可以用p语言来搞定
1.void main(void)
2.{
3.cstr url,aaa;
4.
5.aaa=strbetween($m_url,"/job/","htm",0,1); //获取要发送的表单,需要用抓包工具查看提交哪些东西
6.
7.//msgbox(aaa); 查看aaa是否为提交值
8.
9.fmuclear(); //清空 post区
10.fmuadd("htmlpath", aaa); //传递aaa给提交表单的 htmlpath
11.url = posthtml("https://www.doczj.com/doc/147514452.html,/read.aspx", $m_url,1); //发送表单,返回网页内容赋值给 url,具
体用法参考软件内p语言说明
12.
13.//print(url); 测试是否获取到代码字符
14.url = htmlstandard(url); //网页标准化代码字符
15.
16.url = htmlblock1(url,"id=\"Content\"",0); //获取内容
17.$m_ncontent = url;
18.
19.}
复制代码
5.发布子规则,如果要做图片和附件本地化,需要获取图片、附件的具体地址,这个地址在上传图片、附件结束后会有个返回值,通过p语言来抓取。
以下填入发布子规则“图片返回”,请按具体返回数据调整代码
1.void main(void)
2.{
3.int start;
4.
5.start = strfind($m_rethtml, "callFunction("); //查找返回代码是否包含地址信息
6.if(start < 0) //如果不包含地址信息
7.return;
8.$m_return = strbetween($m_rethtml, ", '", "'", start, 0); //抓取返回图片、附件具体地址
9.}
复制代码
6.对于获取到的内容换行比较多,不少用户追求完美,我们可以用如下p语言配合正则来处理多余的换行符号如果已经制作了采集规则,在采集规则--正文--正则过滤--p语言处理填入以下代码
1.void main(void)
2.{
3.
4.$m_return=regexrep($m_ncontent,"(\\s{2,})","
5."); // $m_return 表示返回给普乐软件规则解释器数值,这边写在正文里面,就是表示返回正文的数值,regexrep
为正则,将2个以上的换行符,替换成1个换行
6.//msgbox($m_ncontent); 显示效果
7.}
复制代码
如果是在采集方案p2处理,可以放在发布前p处理,填入以下代码
1.void main(void)
2.{
3.
4.$m_ncontent=regexrep($m_ncontent,"([\\s]{2,})","
5."); // regexrep为正则,处理所有即将发布的内容,将2个以上的换行符,替换成1个换行,正则中\s表示空
字符,因为\在p语言里面要转义,所以需要多加一个\
6.}
复制代码
简介:
普乐站群营销管理系统是一款所见即所得全自动更新建站的站群管理系统,其整站关联抓取,
自动定向跟踪更新,自定义采集源,网站栏目智能获取,全自动分词翻译伪原创,仿采集破解,千万行业语料库,原创文章精准生成,多语言站群自适应等领先技术优势,让企业站长SEO营销不再困难.
网站:https://www.doczj.com/doc/147514452.html,
交流QQ群:191224690 24452893