用php寫的簡單採集器

2022-03-17 09:25:55 字數 2087 閱讀 8374

通常我們所說的採集器又叫做小偷程式,主要是用來抓取別人網頁內容的。關於採集器的製作,其實並不難,就是遠端開啟要採集的網頁,然後用正規表示式將需要的內容匹配出來,只要稍微有點正規表示式的基礎,都能做出自己的採集器來的。 

前幾天做了個****的程式,因為怕更新麻煩,順帶就寫了個採集器,採集八路中文網的,功能比較簡單,不能自定義規則,不過大概思路都在裡面了,自定義規則可以自己來擴充套件。 

用php來做採集器主要用到兩個函式:file_get_contents()和preg_match_all(),前乙個是遠端讀取網頁內容的,不過只在php5以上的版本才能用,後乙個是正則函式,用來提取需要的內容的。 

下面就一步一步來講功能實現。 

因為是採集**,所以首先要將書名、作者、型別這三個提取出來,別的資訊可根據需要提取。 

這裡以《**********》為目標,先開啟書目頁,鏈結: 

多開啟幾本書會發現,書名的基本格式是:書號/index.aspx,於是我們可以做乙個開始頁,定義乙個,用來輸入需要採集的書號,以後就可以通過$_post[『number』]這種格式來接收需要採集的書號了。接收到書號,下面要做的就是構造書目頁:$url=$_post[『number』]/index.aspx,當然這裡是舉個例子,主要是為了講解方便,實際製作的時候最好檢查一下$_post[『number』]的合法性。 

構造好url以後就可以開始採集書籍資訊了。使用file_get_contents() 函式開啟書目頁:$content=file_get_contents($url),這樣就能將書目頁的內容都讀取出來了。接下來就是將書名、作者和型別等資訊匹配出來了。這裡就以書名為例,其他的都一樣。 開啟書目頁,檢視原始檔,找到「《回到明朝當王爺》」,這就是要提取出來的書名了。提取書名的正規表示式:/(.*?)\/is,使用preg_match_all()函式將書名取出:preg_match_all("/(.*?)\/is",$contents,$title);這樣$title[0][0]的內容就是我們要的標題了(preg_match_all函式的用法可以去百度查,這裡就不詳細說明了)。取出了書籍資訊,接下來就是取章節內容了,要取章節內容,首先要做的就是找到每一章的位址,然後遠端開啟章節,用正則將內容取出來,入庫或者直接生成html靜態檔案。這個是章節列表的位址:可以看出這個和書目頁一樣,是有規律可尋的:分類號/書號/list.shtm。書號前面已經取得,這裡的關鍵是找到分類號,分類號可以在前面的書目頁找到,提取分類號: 

preg_match_all("/html\/book\/[0-9]\/[0-9]\/list\.shtm/is",$contents,$typeid);這樣還不夠,還需要乙個切取函式: 

php**如下: 

function cut($string,$start,$end)//其中$string為要被切取的內容,$start為開始的地方,$end為結束的地方。取出分類號: 

$start = "html/book/"; 

$end = "list.shtm"; 

$typeid = cut($typeid[0][0],$start,$end); 

$typeid = explode("/",$typeid); 

這樣,$typeid[0]就是我們要找的分類號了。接下來就是構造章節列表的位址了:$chapterurl = .$typeid[0]/$_post[『number』]/list.shtm。有了這個就能找到每一章節的位址了。方法如下: 

$ustart = "\""; 

$uend = "\""; 

//t表示title的縮寫 

$tstart = ">"; 

$tend = "

//取路徑,例如:123.shtm,2342.shtm,233.shtm 

preg_match_all("/\"[0-9]\.(shtm)\"/is",$chapterurl,$url); 

//取標題,例如:第一章 九世善人 

preg_match_all("/ $count = count($url[0]); 

for($i=0;$i<=$count;$i++) 

$array陣列就是所有的章節位址了,到這裡,採集器就完成一半了,剩下的就是迴圈開啟每個章節位址,讀取,然後將內容匹配出來。這個比較簡單,這裡就不詳細敘述了。 

利用PHP製作簡單的內容採集器

採集器,通常又叫小偷程式,主要是用來抓取別人網頁內容的。關於採集器的製作,其實並不難,就是遠端開啟要採集的網頁,然後用正規表示式將需要的內容匹配出來,只要稍微有點正規表示式的基礎,都能做出自己的採集器來的。前幾天做了個 的程式,因為怕更新麻煩,順帶就寫了個採集器,採集八路中文網的,功能比較簡單,不能...

Python簡單兩步實現天氣爬蟲採集器

說道爬蟲大家或許感覺非常神秘,其實它沒有我們想象的那麼神奇 當然,google和baidu的爬蟲是一場複雜和強大的,它的強大不是爬蟲本身強大,而是後台的資料處理和資料探勘演算法非常強大 今天我們就來揭開它神秘的面紗。呵呵,用python簡單兩步就可以實現乙個網頁天氣爬蟲程式。爬蟲簡單說來包括兩個部分...

php寫爬蟲進行採集 QueryList的使用

介紹 querylist 是基於phpquery 發開的乙個採集類 phpquery是老外開發的,querylist對其進行了更加人性化的封裝,更方便,從而充滿生命力 安裝 這裡只介紹通過composer安裝,更多詳細內容可參考 1 如果還沒安裝過composer請參照官網先進行composer安裝...