PHP168:整站采集教程
导航: 上一级 | PHP168 | 首页 | DedeCMS | 帝国CMS | Drupal | PHPCMS | Xoops | Joomla | PowerEasy | SupeSite
整站采集教程---入门
第一步:找到一个要采集的网站的列表页.如: http://wind.yinsha.com/ashow.php?sid=2
然后在后台采集参数那里新建一条采集规则.
规则名称:
这一项可以自由定义.
文章列表有多页,每页换一行
这一项.你就复制多个列表页的网址进去吧,比如
http://wind.yinsha.com/ashow.php?sid=2
http://wind.yinsha.com/ashow.php?sid=2&order=publish&size=20&page=2
http://wind.yinsha.com/ashow.php?sid=2&order=publish&size=20&page=3
http://wind.yinsha.com/ashow.php?sid=2&order=publish&size=20&page=4
自定义正则语法规则:
这一项是最关键的.
打开任意一页被采集的列表页如
http://wind.yinsha.com/ashow.php?sid=2
查看网页源代码,然后把所有代码粘贴到DreamWeaver网页编辑器(必须选择代码模式)里
粘贴后.选择编辑模式,然后随便选定一个标题,如下图
再切换到代码模式. 如下图
我们选定红色框住那部分代码做正则处理.
<img src=images/11.gif border=0> <a href="/a/2/200804/2008041513560754.htm" target=_blank>城市角落的暖意</a> </td>
处理后变成
<img src=images/11.gif border=0> <a href="{url=NO"}" target=_blank>{title=NO<}</a> </td>
以上这段代码就是我们最终需要的正则规则了.
讲解如下:
标题换用了
{title=NO<}
链接地址换用了
{url=NO"}
换用的意思.就是为了实现通配符的意思.而通配符如何定义呢?
上面的固定格式如下
{变量名=规则}
这是一个固定的格式.
大家最需要设置的就是大括号里的规则.因为变量名就几个.如url title content
规则原理是这样的.
NO后面跟着什么字符.就代表不包含这样的字符.大家可以知道.地址当中不可能包含有"双引号的.所以我们定义为
{url=NO"}
对标题而言.标题里不可能包含有<这个符号的.所以我们定义为
{title=NO<}
不包含什么字符.我们如何判断呢.遵循一个就近右边原则.就是看他的周围是什么字符.那它就不包含此字符.
比如上面的
href="地址"
如果换成
href='地址'
这种单引号的话,那就要相应的把替换换成
{url=NO'}
又如果.连单引号与双引号都不是的话,如
href=地址 title=>
他右边是空格.此时替换变成
{url=NO }
就是不含有空格了.
又如果是这种情况呢
href=地址>
他的右边是>号此时就要换成
{url=NO>}
通过以上几个例子,大家可以看出来.就是看他右边是什么符号.就输入什么符号.就近右边原则.
标题的取法跟地址一样的道理.不过标题一般都是采用<符号就比较通用了(个别情况除外,会另外有进阶教程).
这样设置好正则规则后,就可以把标题采集回来了.
然后再设置如何采集内容.
内容的采集.一般也就设置一项足够了.也就是正则规则.
随便打开一个被采集网站的内容页.如
http://wind.yinsha.com/a/2/200801/2008011921152760.htm
同样的道理.查看网页源代码.复制源代码到Dreamweaver网页编辑器(必须选择代码模式)里
然后再切换到编辑模式.
此时,如果文字内容太多的话,可以先删除一部份,必须在编辑模式下删除,主要是方便查看.
删除部分内容后.选中文章内容.
然后切换到代码模式.如下图
以上是删除了部份文章内容.方便查看.并且用同样的方法.查看了另一篇文章.目的是为了实现对比.查找通配替换.
我们可以看到.他的通配规则是如下
以上这段就是我们最终需要的正则规则了.
内容的正则格式为什么=号后面是*号.而不是NO符号呢.那是因为内容的字符串太多了.也太复杂了.统一使用*号.也就是固定这样使用.
最后大家值得注意的几点是.取某段代码做正规的时候.不能太少.太少的话.就有可能跟其他地方有重复的情况出现.也就是不准确.也不能太多.太多的话.就有可能不是通用了.成不了通配符了.适可而止.多次偿试. 另外注意不能有多余的空格与换行符
大家可以自己采集一下这个网站:http://wind.yinsha.com/ashow.php?sid=2
这个站比较有代表性.
整站采集教程---如何过滤内容的广告内容
如何过滤内容的画中画广告内容?
一般画中画广告内容都是一段JS代码.比如
<SCRIPT LANGUAGE="JavaScript" src='地址'></SCRIPT>
此时你需要修改采集参数中的内容规则,选择(如下图)
显示不常用的高级设置(一般不用)
在以上
要替换文章中的字符:
这一项输入如下代码
JavaScript" src='|JavaScript" src='abc
请注意你要采集文件的这些字母的大小写.
输入一个ABC目的是破坏他的路径.
有的时候.他不是js代码.而是其他DIV 或者是table的话.你就输入以下代码
<div|<div style="display:none;" <table|<tablestyle="display:none;"
目的就是为了隐藏它,不要显示出来
一般都是以上这两种情况的.