




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Snoopy是一個(gè)php類,用來模擬瀏覽器的功能,可以獲取網(wǎng)頁內(nèi)容,發(fā)送表 單。Snoopy正確運(yùn)行需要你的服務(wù)器的 PHP版本在4以上,并且支持PCREPerl Compatible Regular Expressions),基本的 LAMP!艮務(wù)都支持。一、Snoopy的一些特點(diǎn):1. 抓取網(wǎng)頁的內(nèi)容 fetch2. 抓取網(wǎng)頁的文本內(nèi)容(去除HTML標(biāo)簽)fetchtext3. 抓取網(wǎng)頁的鏈接,表單 fetchlinks fetchform4. 支持代理主機(jī)5. 支持基本的用戶名 / 密碼驗(yàn)證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. 支持重定向的時(shí)候傳遞cookies,要求php4以上就可以了,由于本身是 php 一個(gè)類,無需擴(kuò)支持,服務(wù)器不支持 curl 時(shí)候的最好選擇。二、類方法 :fetch($URI)這是為了抓取網(wǎng)頁的內(nèi)容而使用的方法。$URI參數(shù)是被抓取網(wǎng)頁的URL地 址。抓取的結(jié)果被存儲(chǔ)在 $this->results 中。如果你正在抓取的是一個(gè)框架, Sn oopy將會(huì)將每個(gè)框架追蹤后存入數(shù)組中,然后存入$this
3、->results 。fetchtext($URI)本方法類似于fetch(),唯一不同的就是本方法會(huì)去除 HTML標(biāo)簽和其他的 無關(guān)數(shù)據(jù),只返回網(wǎng)頁中的文字內(nèi)容。fetchform($URI)本方法類似于fetch(),唯一不同的就是本方法會(huì)去除 HTM標(biāo)簽和其他的 無關(guān)數(shù)據(jù),只返回網(wǎng)頁中表單內(nèi)容 (form) 。fetchlinks($URI)本方法類似于fetch(),唯一不同的就是本方法會(huì)去除 HTM標(biāo)簽和其他的 無關(guān)數(shù)據(jù),只返回網(wǎng)頁中鏈接 (link) 。 默認(rèn)情況下,相對(duì)鏈接將自動(dòng)補(bǔ)全,轉(zhuǎn)換成完整的URL。submit($URI,$formvars)本方法向$URL旨定的鏈接
4、地址發(fā)送確認(rèn)表單。$formvars是一個(gè)存儲(chǔ)表單參 數(shù)的數(shù)組。submittext($URI,$formvars)本方法類似于submit(),唯一不同的就是本方法會(huì)去除 HTMI標(biāo)簽和其他的 無關(guān)數(shù)據(jù),只返回登陸后網(wǎng)頁中的文字內(nèi)容。submitlinks($URI)本方法類似于submit(),唯一不同的就是本方法會(huì)去除 HTMI標(biāo)簽和其他的 無關(guān)數(shù)據(jù),只返回網(wǎng)頁中鏈接 (link) 。 默認(rèn)情況下,相對(duì)鏈接將自動(dòng)補(bǔ)全,轉(zhuǎn)換成完整的URL。三、類屬性 : ( 缺省值在括號(hào)里 )$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 是否將鏈接都補(bǔ)全為完整地址 (true)$user 認(rèn)證用戶名 , 如果有的話$pass 認(rèn)證用戶名 , 如果有的話$accept http 接受類型
6、(image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)$error 哪里報(bào)錯(cuò) , 如果有的話$response_code 從服務(wù)器返回的響應(yīng)代碼$headers 從服務(wù)器返回的頭信息$maxlength 最長返回?cái)?shù)據(jù)長度$read_timeout 讀取操作超時(shí) (requires PHP 4 Beta 4+) 設(shè)置為 0 為沒有超時(shí)$timed_out 如果一次讀取操作超時(shí)了,本屬性返回 true (requires PHP4 Beta 4+)$maxframes 允許追蹤的框架最大數(shù)量$status 抓取的 http 的狀態(tài)$te
7、mp_dir 網(wǎng)頁服務(wù)器能夠?qū)懭氲呐R時(shí)文件目錄 (/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)訪問,此處獲取第一個(gè)模塊第一頁的數(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ù)組,將同一個(gè)帖子不同頁面的內(nèi)容放一個(gè)數(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ù)項(xiàng)開始/$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),針對(duì)一個(gè)帖子if (is_array($value)foreach (
17、$value as $k1=>$v1)/ 頁內(nèi)循環(huán),針對(duì)一個(gè)帖子的 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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 云陽租房合同標(biāo)準(zhǔn)文本
- 鄉(xiāng)鎮(zhèn)道路保潔合同標(biāo)準(zhǔn)文本
- 保安兼職聘用合同標(biāo)準(zhǔn)文本
- 鄉(xiāng)村振興文化墻合同樣本
- 個(gè)人采購法蘭合同標(biāo)準(zhǔn)文本
- 買賣狗狗合同范例
- 債權(quán)借款合同標(biāo)準(zhǔn)文本
- oem酒合同標(biāo)準(zhǔn)文本
- 全家超市購銷合同標(biāo)準(zhǔn)文本
- 做兼職會(huì)計(jì)合同標(biāo)準(zhǔn)文本
- 2025年池州職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性考試題庫參考答案
- 2024 在中國的美國企業(yè)特別報(bào)告
- 佛山市電梯維修安裝工職業(yè)技能競賽實(shí)施方案
- 滁州全椒縣事業(yè)單位招聘筆試試題2024
- 2023-2024學(xué)年廣東省深圳市福田區(qū)八年級(jí)下學(xué)期期中英語試題及答案
- 2025年河北交通職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫完美版
- 2024年中考?xì)v史真題解析(新疆試卷)
- 2025年國家發(fā)展和改革委員會(huì)城市和小城鎮(zhèn)改革發(fā)展中心招聘工作人員6人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 物流運(yùn)輸安全培訓(xùn)內(nèi)容
- 中醫(yī)體質(zhì)辨識(shí)
- 2024醫(yī)保政策培訓(xùn)
評(píng)論
0/150
提交評(píng)論