PHP168:整站采集教程

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

导航: 上一级 | PHP168 | 首页 | DedeCMS | 帝国CMS | Drupal | PHPCMS | Xoops | Joomla | PowerEasy | SupeSite

整站采集教程---入门

第一步:找到一个要采集网站的列表页.如: http://wind.yinsha.com/ashow.php?sid=2

Php168 10.jpg

然后在后台采集参数那里新建一条采集规则.
规则名称:
这一项可以自由定义.

文章列表有多页,每页换一行
这一项.你就复制多个列表页的网址进去吧,比如
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网页编辑器(必须选择代码模式)里

粘贴后.选择编辑模式,然后随便选定一个标题,如下图

Php168 11.jpg

再切换到代码模式. 如下图

Php168 12.jpg

我们选定红色框住那部分代码做正则处理.

<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网页编辑器(必须选择代码模式)里

然后再切换到编辑模式.

此时,如果文字内容太多的话,可以先删除一部份,必须在编辑模式下删除,主要是方便查看.

删除部分内容后.选中文章内容.

然后切换到代码模式.如下图

Php168 17.jpg


Php168 13.jpg

以上是删除了部份文章内容.方便查看.并且用同样的方法.查看了另一篇文章.目的是为了实现对比.查找通配替换.

我们可以看到.他的通配规则是如下

Php168 14.jpg

以上这段就是我们最终需要的正则规则了.

内容的正则格式为什么=号后面是*号.而不是NO符号呢.那是因为内容的字符串太多了.也太复杂了.统一使用*号.也就是固定这样使用.

最后大家值得注意的几点是.取某段代码做正规的时候.不能太少.太少的话.就有可能跟其他地方有重复的情况出现.也就是不准确.也不能太多.太多的话.就有可能不是通用了.成不了通配符了.适可而止.多次偿试. 另外注意不能有多余的空格与换行符

大家可以自己采集一下这个网站:http://wind.yinsha.com/ashow.php?sid=2

这个站比较有代表性.

Php168 10.jpg


Php168 11.jpg


Php168 12.jpg


Php168 17.jpg


Php168 18.jpg


Php168 19.jpg

整站采集教程---如何过滤内容的广告内容

如何过滤内容的画中画广告内容?

一般画中画广告内容都是一段JS代码.比如

<SCRIPT LANGUAGE="JavaScript" src='地址'></SCRIPT>

此时你需要修改采集参数中的内容规则,选择(如下图)

显示不常用的高级设置(一般不用)

Php168 20.jpg

在以上

要替换文章中的字符:

这一项输入如下代码

JavaScript" src='|JavaScript" src='abc

请注意你要采集文件的这些字母的大小写.

输入一个ABC目的是破坏他的路径.

有的时候.他不是js代码.而是其他DIV 或者是table的话.你就输入以下代码

<div|<div style="display:none;"
<table|<tablestyle="display:none;"

目的就是为了隐藏它,不要显示出来

一般都是以上这两种情况的.