CMSware常用采集语法

来自站长百科
跳转至: 导航、​ 搜索

导航:返回上一页

注意:这里的“常用”是指可以用于多数页面,但绝对不是“万用”

索引页有效区域定位[ ]

这个最简单,建议为空,不是必要的填写反而影响效率,也可以用下面的:

/<html>(.*)<\/html>/isU

有效内容页URL过虑[ ]

/href=[\"\'@]([^<>\"\']+)[\"\'@][\s>]/isU

基本可以通杀了- -不过既然覆盖面广了肯定就不会太准了,也就是说所有的链接都会抓来

再给两个范围比较小的:

/href=[\"\'@]([^<>\s\"\']+.[shtml]+)[\"\'@][\s>]+/isU
/href=[\"\'@]([^<>\s\"\']+.[asphpjx]+/?[a-z]+=[0-9]+)[\"\'@][\s>]+/isU

或者就直接把两个放一起:

/href=[\"\'@]([^<>\s\"\']+.[shtml]+)[\"\'@][\s>]+|href=[\"\'@]([^<>\s\"\']+.[asphpjx]+/?[a-z]+=[0-9]+)[\"\'@][\s>]+/isU

如果要再精确点的话:

/href=[\"\'@]([^<>\s\"\']+[0-9]+.[shtml]+)[\"\'@][\s>]+|href=[\"\'@]([^<>\s\"\']+.[asphpjx]+/?[a-z]+=[0-9]+)[\"\'@][\s>]+/isU

关键是在于链接的名称,就是红色部分

  • 如果是全数字就可以[0-9]+
  • 如果混有英文就[0-9a-z]+
  • 如果有符号比如-就[0-9\-]+

新闻标题[ ]

<title>([^<>\s]+)[^\s\-]+<\/title>/isU

如果是

/<h1>(.*)<\/h1>/isU

如果页面有h1,最好就是用这个了

多页采集[ ]

比如需要采集

http://edu.qq.com/kaoyan/fuxizhidao01.htm
...
http://edu.qq.com/kaoyan/fuxizhidao08.htm

使用如下的索引页规则

http://edu.qq.com/kaoyan/fuxizhidao{0[1,8,0]}.htm

规则说明: {A[B,C,D]}

“{...}”是索引页分页语法定义

  • A:附加字符
  • B:开始页数
  • C:结束页数
  • D:采集的第一页是否从默认初始页(去掉“{...}”的URL)开始,是的话填“1”,否则填“0”
  • 举例1-采集索引页URL规则1
http://edu.qq.com/kaoyan/fuxizhidao{0[1,8,1]}.htm

可以采集如下页面:
http://edu.qq.com/kaoyan/fuxizhidao.htm
http://edu.qq.com/kaoyan/fuxizhidao01.htm
http://edu.qq.com/kaoyan/fuxizhidao02.htm
...
http://edu.qq.com/kaoyan/fuxizhidao08.htm
  • 举例2-采集索引页URL规则2
http://edu.qq.com/kaoyan/fuxizhidao{0[1,8,0]}.htm

可以采集如下页面:
http://edu.qq.com/kaoyan/fuxizhidao01.htm
http://edu.qq.com/kaoyan/fuxizhidao02.htm
...
http://edu.qq.com/kaoyan/fuxizhidao08.htm

规则1比规则2多采集了一个 http://edu.qq.com/kaoyan/fuxizhidao.htm 这个就是参数D的作用

  • 举例3-采集索引页URL规则3
http://www.blueidea.com/tech/web/index{_[2,8,1]}.asp

可以采集如下页面:
http://www.blueidea.com/tech/web/index.asp
http://www.blueidea.com/tech/web/index_2.asp
http://www.blueidea.com/tech/web/index_3.asp
...
http://www.blueidea.com/tech/web/index_8.asp
  • 举例4-采集索引页URL规则4
http://www.blueidea.com/tech/web/index{_[2,8,0]}.asp

可以采集如下页面:
http://www.blueidea.com/tech/web/index_2.asp
http://www.blueidea.com/tech/web/index_3.asp
...
http://www.blueidea.com/tech/web/index_8.asp

多页采集索引页URL规则[ ]

http://www.xinhuanet.com/newscenter/xhyw{_[1,20]}.htm

使用以上的规则就可以采集如下共20个页面

http://www.xinhuanet.com/newscenter/xhyw.htm
http://www.xinhuanet.com/newscenter/xhyw_1.htm
http://www.xinhuanet.com/newscenter/xhyw_2.htm
http://www.xinhuanet.com/newscenter/xhyw_3.htm
...
..
.
http://www.xinhuanet.com/newscenter/xhyw_20.htm

过虑函数管道[ ]

<Title>{DATA}</Title>==>[clearHTML]==>[localizeImg]==>helloworld

通过使用==>[采集函数名称]就可以加入一个过虑管道

内容图片本地化[ ]

使用过虑函数实现:localizeImg

<font id="Zoom">{DATA} </font>
<table==>[clearRubbish]==>[localizeImg]==>[page]

定义某个字段为分页采集字段[ ]

比如新闻内容,规则如下:

<font id="Zoom">{DATA} </font>
<table==>[clearRubbish]==>[localizeImg]==>[Page]

内容页分页采集也使用过虑函数来实现

内容分页采集函数:[Page]

  • 自适应规则语法

不再需要你熟悉正则语法

语法规则:

[前标识]{DATA}[后标识](==>[过虑函数名1]==>[过虑函数名2]......)
  • [前标识] :必须。任何字符串,必须具有唯一性。
  • {DATA} :必须。就是你要采集的有效内容
  • [后标识] :必须。任何字符串
  • (==>[过虑函数名1]==>[过虑函数名2]......) :可选。过虑函数管道,管道可以无限延伸下去

比如:

<Title>{DATA}</Title>==>[clearHTML]

<td class="Content">{DATA}</td> </tr> </table> <table width="100%" border="0">
  • 智能采集地址修复:

既便采集索引页内容中的有效内容页URL为相对地址也可以自动修复,例如: 采集索引页http://news.xinhuanet.com/newscenter/index.html

  • 支持的URL格式列表:
<a href="http://news.xinhuanet.com/newscenter/2004-12/04/content_2293879.htm " >
<a href="/newscenter/2004-12/04/content_2293879.htm " >
<a href="newscenter/2004-12/04/content_2293879.htm " >
<a href="./04/content_2293879.htm " >
<a href="../../content_2293879.htm " >

内容页有分页时设置采集自动检测规则[ ]

<center><a href="{DATA}" class="nextPage"><img
<a href="http://www.pconline.com.cn/pcjob/nettech/cisco/others/0412/506028_1.html" >[下一页]</a>
<a href="http://news.xinhuanet.com/it/2004-12/04/content_2294495_2.htm" class="nextPage"><img src="http://imgs.xinhuanet.com/icon/newscenter
/news_xy.gif" border="0"></a>
  • 设置默认值:
{Default:xxx}
  • 时间采集器:

获取当前的时间戳(Timestamp)

{Timer}

  • 来源地址采集器:

获取当前的来源网址

{URL}

  1. 还有要注意的是大小写比如<a>和<a>等
  2. 还有标记属性值有没有加引号就是“和‘
  3. 还有就是特殊符号在php中的输入方法比如"和/ 就要写成"和/
  4. 还有就是中英文输入符号的区别比如“ 和"是不同的,因为中文输入下符号是双字节的

注意了这些~一般的采集也就不成问题了


参考来源[ ]