PHP168:整站采集教程
導航: 上一級 | PHP168 | 首頁 | DedeCMS | 帝國CMS | Drupal | PHPCMS | Xoops | Joomla | PowerEasy | SupeSite
整站采集教程---入門
第一步:找到一個要采集的網(wǎng)站的列表頁.如: http://wind.yinsha.com/ashow.php?sid=2
然后在后臺采集參數(shù)那里新建一條采集規(guī)則.
規(guī)則名稱:
這一項可以自由定義.
文章列表有多頁,每頁換一行
這一項.你就復制多個列表頁的網(wǎng)址進去吧,比如
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
自定義正則語法規(guī)則:
這一項是最關(guān)鍵的.
打開任意一頁被采集的列表頁如
http://wind.yinsha.com/ashow.php?sid=2
查看網(wǎng)頁源代碼,然后把所有代碼粘貼到DreamWeaver網(wǎng)頁編輯器(必須選擇代碼模式)里
粘貼后.選擇編輯模式,然后隨便選定一個標題,如下圖
再切換到代碼模式. 如下圖
我們選定紅色框住那部分代碼做正則處理.
<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>
以上這段代碼就是我們最終需要的正則規(guī)則了.
講解如下:
標題換用了
{title=NO<}
鏈接地址換用了
{url=NO"}
換用的意思.就是為了實現(xiàn)通配符的意思.而通配符如何定義呢?
上面的固定格式如下
{變量名=規(guī)則}
這是一個固定的格式.
大家最需要設(shè)置的就是大括號里的規(guī)則.因為變量名就幾個.如url title content
規(guī)則原理是這樣的.
NO后面跟著什么字符.就代表不包含這樣的字符.大家可以知道.地址當中不可能包含有"雙引號的.所以我們定義為
{url=NO"}
對標題而言.標題里不可能包含有<這個符號的.所以我們定義為
{title=NO<}
不包含什么字符.我們?nèi)绾闻袛嗄?遵循一個就近右邊原則.就是看他的周圍是什么字符.那它就不包含此字符.
比如上面的
href="地址"
如果換成
href='地址'
這種單引號的話,那就要相應(yīng)的把替換換成
{url=NO'}
又如果.連單引號與雙引號都不是的話,如
href=地址 title=>
他右邊是空格.此時替換變成
{url=NO }
就是不含有空格了.
又如果是這種情況呢
href=地址>
他的右邊是>號此時就要換成
{url=NO>}
通過以上幾個例子,大家可以看出來.就是看他右邊是什么符號.就輸入什么符號.就近右邊原則.
標題的取法跟地址一樣的道理.不過標題一般都是采用<符號就比較通用了(個別情況除外,會另外有進階教程).
這樣設(shè)置好正則規(guī)則后,就可以把標題采集回來了.
然后再設(shè)置如何采集內(nèi)容.
內(nèi)容的采集.一般也就設(shè)置一項足夠了.也就是正則規(guī)則.
隨便打開一個被采集網(wǎng)站的內(nèi)容頁.如
http://wind.yinsha.com/a/2/200801/2008011921152760.htm
同樣的道理.查看網(wǎng)頁源代碼.復制源代碼到Dreamweaver網(wǎng)頁編輯器(必須選擇代碼模式)里
然后再切換到編輯模式.
此時,如果文字內(nèi)容太多的話,可以先刪除一部份,必須在編輯模式下刪除,主要是方便查看.
刪除部分內(nèi)容后.選中文章內(nèi)容.
然后切換到代碼模式.如下圖
以上是刪除了部份文章內(nèi)容.方便查看.并且用同樣的方法.查看了另一篇文章.目的是為了實現(xiàn)對比.查找通配替換.
我們可以看到.他的通配規(guī)則是如下
以上這段就是我們最終需要的正則規(guī)則了.
內(nèi)容的正則格式為什么=號后面是*號.而不是NO符號呢.那是因為內(nèi)容的字符串太多了.也太復雜了.統(tǒng)一使用*號.也就是固定這樣使用.
最后大家值得注意的幾點是.取某段代碼做正規(guī)的時候.不能太少.太少的話.就有可能跟其他地方有重復的情況出現(xiàn).也就是不準確.也不能太多.太多的話.就有可能不是通用了.成不了通配符了.適可而止.多次償試. 另外注意不能有多余的空格與換行符
大家可以自己采集一下這個網(wǎng)站:http://wind.yinsha.com/ashow.php?sid=2
這個站比較有代表性.
整站采集教程---如何過濾內(nèi)容的廣告內(nèi)容
如何過濾內(nèi)容的畫中畫廣告內(nèi)容?
一般畫中畫廣告內(nèi)容都是一段JS代碼.比如
<SCRIPT LANGUAGE="JavaScript" src='地址'></SCRIPT>
此時你需要修改采集參數(shù)中的內(nèi)容規(guī)則,選擇(如下圖)
顯示不常用的高級設(shè)置(一般不用)
在以上
要替換文章中的字符:
這一項輸入如下代碼
JavaScript" src='|JavaScript" src='abc
請注意你要采集文件的這些字母的大小寫.
輸入一個ABC目的是破壞他的路徑.
有的時候.他不是js代碼.而是其他DIV 或者是table的話.你就輸入以下代碼
<div|<div style="display:none;" <table|<tablestyle="display:none;"
目的就是為了隱藏它,不要顯示出來
一般都是以上這兩種情況的.