版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Snoopy是一個php類,用來模擬瀏覽器的功能,可以獲取網(wǎng)頁內(nèi)容,發(fā)送表 單。Snoopy正確運行需要你的服務(wù)器的 PHP版本在4以上,并且支持PCREPerl Compatible Regular Expressions),基本的 LAMP!艮務(wù)都支持。一、Snoopy的一些特點:1. 抓取網(wǎng)頁的內(nèi)容 fetch2. 抓取網(wǎng)頁的文本內(nèi)容(去除HTML標(biāo)簽)fetchtext3. 抓取網(wǎng)頁的鏈接,表單 fetchlinks fetchform4. 支持代理主機(jī)5. 支持基本的用戶名 / 密碼驗證6. 支持設(shè)置 user_agent, referer( 來路), cookies 和 heade
2、r content( 頭 文件)7. 支持瀏覽器重定向,并能控制重定向深度8. 能把網(wǎng)頁中的鏈接擴(kuò)展成高質(zhì)量的 url( 默認(rèn))9. 提交數(shù)據(jù)并且獲取返回值10. 支持跟蹤HTML!架11. 支持重定向的時候傳遞cookies,要求php4以上就可以了,由于本身是 php 一個類,無需擴(kuò)支持,服務(wù)器不支持 curl 時候的最好選擇。二、類方法 :fetch($URI)這是為了抓取網(wǎng)頁的內(nèi)容而使用的方法。$URI參數(shù)是被抓取網(wǎng)頁的URL地 址。抓取的結(jié)果被存儲在 $this->results 中。如果你正在抓取的是一個框架, Sn oopy將會將每個框架追蹤后存入數(shù)組中,然后存入$this
3、->results 。fetchtext($URI)本方法類似于fetch(),唯一不同的就是本方法會去除 HTML標(biāo)簽和其他的 無關(guān)數(shù)據(jù),只返回網(wǎng)頁中的文字內(nèi)容。fetchform($URI)本方法類似于fetch(),唯一不同的就是本方法會去除 HTM標(biāo)簽和其他的 無關(guān)數(shù)據(jù),只返回網(wǎng)頁中表單內(nèi)容 (form) 。fetchlinks($URI)本方法類似于fetch(),唯一不同的就是本方法會去除 HTM標(biāo)簽和其他的 無關(guān)數(shù)據(jù),只返回網(wǎng)頁中鏈接 (link) 。 默認(rèn)情況下,相對鏈接將自動補全,轉(zhuǎn)換成完整的URL。submit($URI,$formvars)本方法向$URL旨定的鏈接
4、地址發(fā)送確認(rèn)表單。$formvars是一個存儲表單參 數(shù)的數(shù)組。submittext($URI,$formvars)本方法類似于submit(),唯一不同的就是本方法會去除 HTMI標(biāo)簽和其他的 無關(guān)數(shù)據(jù),只返回登陸后網(wǎng)頁中的文字內(nèi)容。submitlinks($URI)本方法類似于submit(),唯一不同的就是本方法會去除 HTMI標(biāo)簽和其他的 無關(guān)數(shù)據(jù),只返回網(wǎng)頁中鏈接 (link) 。 默認(rèn)情況下,相對鏈接將自動補全,轉(zhuǎn)換成完整的URL。三、類屬性 : ( 缺省值在括號里 )$host 連接的主機(jī)$port 連接的端口 $proxy_host 使用的代理主機(jī),如果有的話 $proxy_p
5、ort 使用的代理主機(jī)端口,如果有的話 $agent 用戶代理偽裝 (Snoopy v0.1) $referer 來路信息,如果有的話$cookies cookies , 如果有的話 $rawheaders 其他的頭信息 , 如果有的話 $maxredirs 最大重定向次數(shù), 0=不允許 (5) $offsiteok whether or not to allow redirects off-site. (true) $expandlinks 是否將鏈接都補全為完整地址 (true)$user 認(rèn)證用戶名 , 如果有的話$pass 認(rèn)證用戶名 , 如果有的話$accept http 接受類型
6、(image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)$error 哪里報錯 , 如果有的話$response_code 從服務(wù)器返回的響應(yīng)代碼$headers 從服務(wù)器返回的頭信息$maxlength 最長返回數(shù)據(jù)長度$read_timeout 讀取操作超時 (requires PHP 4 Beta 4+) 設(shè)置為 0 為沒有超時$timed_out 如果一次讀取操作超時了,本屬性返回 true (requires PHP4 Beta 4+)$maxframes 允許追蹤的框架最大數(shù)量$status 抓取的 http 的狀態(tài)$te
7、mp_dir 網(wǎng)頁服務(wù)器能夠?qū)懭氲呐R時文件目錄 (/tmp)$curl_path cURL binary 的目錄 , 如果沒有 cURL binary 就設(shè)置為 false四、以下是 demo include "Snoopy.class.php"$snoopy = new Snoopy;$snoopy->proxy_host = ""$snoopy->proxy_port = "8080"$snoopy->agent = "(compatible; MSIE4.01; MSN2.5; AOL4.0; Win
8、dows98)" $snoopy->referer = "$snoopy->cookies"SessionID" = 238472834723489l; $snoopy->cookies"favoriteColor" = "RED"$snoopy->rawheaders"Pragma" = "no-cache"$snoopy->maxredirs = 2;$snoopy->offsiteok = false;$snoopy->expa
9、ndlinks = false;$snoopy->user = "joe"$snoopy->pass = "bloe"if($snoopy->fetchtext("")echo " <PRE>".htmlspecialchars($snoopy->results)." </PRE>n" <BR> <BR>else <BR>echo "error fetching document: ".$sn
10、oopy->error."n"snoopy 采集 phpchina 示例<?php/ 采集 phpchina set_time_limit(0); require_once("Snoopy.class.php"); $snoopy=new Snoopy();/ 登陸論壇$submit_url = " $submit_vars"loginmode" = "normal"$submit_vars"styleid" = "1"$submit_vars"
11、;cookietime" = "315360000" $submit_vars"loginfield" = "username"$submit_vars"username" = "*" /你的用戶名$submit_vars"password" = "*" / 你的密碼 $submit_vars"questionid" = "0"$submit_vars"answer" = "&
12、quot; $submit_vars"loginsubmit" = "提 交"$snoopy->submit($submit_url,$submit_vars); if ($snoopy->results)/ 獲取連接地址 $snoopy->fetchlinks(" $url=array();$url=$snoopy->results;/print_r($url); foreach ($url as $key=>$value) 地址/ 匹配 即論壇板塊地址if?fid=)0-9*&sid=a-zA-Z6/i
13、",$value) unset($url$key);/print_r($url);/ 獲取到板塊數(shù)組 $url ,循環(huán)訪問,此處獲取第一個模塊第一頁的數(shù)據(jù) $i=0;foreach ($url as $key=>$value)if ($i>=1)/ 測試限制break;else/ 訪問該模塊, 提取帖子的連接地址, 正式訪問里需要提取帖子分頁的數(shù)據(jù), 后根據(jù)分頁數(shù)據(jù)提取帖子數(shù)據(jù)$snoopy=new Snoopy();$snoopy->fetchlinks($value);$tie=array();$tie$i=$snoopy->results;/print_
14、r($tie);/ 轉(zhuǎn)換數(shù)組foreach ($tie$i as $key=>$value)/ 匹配 D1&page=1&sid=iBLZfKif(!preg_match("/A(http:Wwww.phpchi VbbsVviewthread.php?t id=)0-9*&extra=page%3D1&page=0-9*&sid=a-zA-Z6/i",$va lue)unset($tie$i$key);/print_r($tie$i);/ 歸類數(shù)組,將同一個帖子不同頁面的內(nèi)容放一個數(shù)組里$l
15、eft=''/ 連接左邊公用地址$j=0;$page=array();foreach ($tie$i as $key=>$value)$left=substr($value,0,52);$m=0;foreach ($tie$i as $pkey=>$pvalue)/ 重組數(shù)組if (substr($pvalue,0,52)=$left)$page$j$m=$pvalue;$m+;$j+;/ 去除重復(fù)項開始/$page=array_unique($page); 只能用于一維數(shù)組$paget0=$page0;$nums=count($page);for ($n=1;$n
16、 <$nums;$n+)$paget$n=array_diff($page$n,$page$n-1);/ 去除多維數(shù)組重復(fù)值結(jié)束/ 去除數(shù)組空值unset($page);$page=array();/ 重新定義 page 數(shù)組$page=array_filter($paget);/print_r($page);$u=0;$title=array();$content=array();$temp=''$tt=array();foreach ($page as $key=>$value)/ 外圍循環(huán),針對一個帖子if (is_array($value)foreach (
17、$value as $k1=>$v1)/ 頁內(nèi)循環(huán),針對一個帖子的 N 頁$snoopy=new Snoopy();$snoopy->fetch($v1);$temp=$snoopy->results;/ 讀取標(biāo)題if (!preg_match_all("/ <h2>(.*) </h2>/i",$temp,$tt)echo "no title"exit;else$title$u=$tt11; unset($tt);/ 讀取內(nèi)容if (!preg_match_all("/ <div id="
18、;postmessage_0-91,8" class="t_msgfont">(.*) </div>/i",$temp,$tt) print_r($tt);echo "no content1"exit;elseforeach ($tt1 as $c=>$c2)$content$u.=$c2;else/ 直接取頁內(nèi)容 $snoopy=new Snoopy(); $snoopy->fetch($value); $temp=$snoopy->results;/ 讀取標(biāo)題if (!preg_match_all("/ <h2>(.*) </h2>/i",$temp,$tt)echo "no title"exit;else $title$u=$tt11; unset($tt);/ 讀取
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度牧業(yè)產(chǎn)業(yè)扶貧項目承包合同范本3篇
- 2025版農(nóng)產(chǎn)品溯源與質(zhì)量認(rèn)證服務(wù)合同3篇
- 遼寧省朝陽市北票市2024-2025學(xué)年七年級上學(xué)期1月期末道德與法治試題(含答案)
- 2025年度個人公司股權(quán)結(jié)構(gòu)調(diào)整合同4篇
- 二零二五年度某局勞務(wù)分包結(jié)算與數(shù)字化轉(zhuǎn)型戰(zhàn)略合同2篇
- 天然氣在科技創(chuàng)新中的地位考核試卷
- 家禽飼養(yǎng)業(yè)質(zhì)量品牌提升與市場競爭策略考核試卷
- 供應(yīng)鏈協(xié)同采購與供應(yīng)商管理考核試卷
- 儀器儀表制造業(yè)的持續(xù)創(chuàng)新能力考核試卷
- 2025版二零二五年度美發(fā)店房東租賃合同范本:租賃合作協(xié)議4篇
- 中醫(yī)診療方案腎病科
- 2025年安慶港華燃?xì)庀薰菊衅腹ぷ魅藛T14人高頻重點提升(共500題)附帶答案詳解
- 人教版(2025新版)七年級下冊數(shù)學(xué)第七章 相交線與平行線 單元測試卷(含答案)
- GB/T 44351-2024退化林修復(fù)技術(shù)規(guī)程
- 從跨文化交際的角度解析中西方酒文化(合集5篇)xiexiebang.com
- 中藥飲片培訓(xùn)課件
- 醫(yī)院護(hù)理培訓(xùn)課件:《早產(chǎn)兒姿勢管理與擺位》
- 《論文的寫作技巧》課件
- 空氣自動站儀器運營維護(hù)項目操作說明以及簡單故障處理
- 2022年12月Python-一級等級考試真題(附答案-解析)
- T-CHSA 020-2023 上頜骨缺損手術(shù)功能修復(fù)重建的專家共識
評論
0/150
提交評論