phpsnoopy
『壹』 高手速來拿高分!!【php採集:瀏覽器能打開,php卻無法採集。】 剛才不小心關閉了。再開!
你伺服器的問題吧 為什麼我能
『貳』 查看php 支不支持snoopy函數
echo function_exists(函數名稱);
輸出1或者true表示支持
輸出0或者false表示不支持
『叄』 PHP snoopy採集類怎樣採集我想要的內容
Snoopy是一個php類,用來模擬瀏覽器的功能,可以獲取網頁內容,發送表單,可以用來開發一些採集程序和小偷程序,本文章詳細介紹snoopy的使用教程。
Snoopy的一些特點:
抓取網頁的內容 fetch
抓取網頁的文本內容 (去除HTML標簽) fetchtext
抓取網頁的鏈接,表單 fetchlinks fetchform
支持代理主機
支持基本的用戶名/密碼驗證
支持設置 user_agent, referer(來路), cookies 和 header content(頭文件)
支持瀏覽器重定向,並能控制重定向深度
能把網頁中的鏈接擴展成高質量的url(默認)
提交數據並且獲取返回值
支持跟蹤HTML框架
支持重定向的時候傳遞cookies
要求php4以上就可以了 由於本身是php一個類 無需擴支持 伺服器不支持curl時候的最好選擇,
Snoopy類方法及示例:
fetch($URI)
這是為了抓取網頁的內容而使用的方法。
$URI參數是被抓取網頁的URL地址。
抓取的結果被存儲在 $this->results 中。
如果你正在抓取的是一個框架,Snoopy將會將每個框架追蹤後存入數組中,然後存入 $this->results。
fetchtext($URI)
本方法類似於fetch(),唯一不同的就是本方法會去除HTML標簽和其他的無關數據,只返回網頁中的文字內容。
fetchform($URI)
本方法類似於fetch(),唯一不同的就是本方法會去除HTML標簽和其他的無關數據,只返回網頁中表單內容(form)。
fetchlinks($URI)
本方法類似於fetch(),唯一不同的就是本方法會去除HTML標簽和其他的無關數據,只返回網頁中鏈接(link)。
默認情況下,相對鏈接將自動補全,轉換成完整的URL。
submit($URI,$formvars)
本方法向$URL指定的鏈接地址發送確認表單。$formvars是一個存儲表單參數的數組。
submittext($URI,$formvars)
本方法類似於submit(),唯一不同的就是本方法會去除HTML標簽和其他的無關數據,只返回登陸後網頁中的文字內容。
submitlinks($URI)
本方法類似於submit(),唯一不同的就是本方法會去除HTML標簽和其他的無關數據,只返回網頁中鏈接(link)。
默認情況下,相對鏈接將自動補全,轉換成完整的URL。
『肆』 PHP跨站請求
有很多方法
1、自己做包,實際上就是用文件函數一行行地寫,摸擬post提交;
2、一般函數通訊,curl
3、用snoopy的類。這是目前用得最多的。
我來舉個例子給你:
< ?php
include "Snoopy.class.php";
$snoopy = new Snoopy;
$submit_url = "http://www.phpx.com/happy/logging.php?action=login";
$submit_vars["loginmode"] = "normal";
$submit_vars["styleid"] = "1";
$submit_vars["cookietime"] = "315360000";
$submit_vars["loginfield"] = "username";
$submit_vars["username"] = "********"; //你的用戶名
$submit_vars["password"] = "*******"; //你的密碼
$submit_vars["questionid"] = "0";
$submit_vars["answer"] = "";
$submit_vars["loginsubmit"] = "提 交";
$snoopy->submit($submit_url,$submit_vars);
print $snoopy->results;
?>
詳細出處參考:http://www.jb51.net/article/14181.htm
『伍』 用php的Snoopy如何抓取網頁的驗證碼呢
curl就可以了
<?php
header('Content-Type:image/png');
$url="圖片鏈接";//圖片鏈接
$ch=curl_init();
//Cookie:PHPSESSID=
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_COOKIE,'這里是你的cookies');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_TIMEOUT,0);//忽略超時
curl_setopt($ch,CURLOPT_NOBODY,false);
$str=curl_exec($ch);
curl_close($ch);
『陸』 Snoopy採集,thinkphp使用snoopy採集數據
呵呵。這種情況,看看是不是程序那裡有錯誤了吧。
一般情況不會出現這么大內存需求的。
另外,如果你開啟的是snoopy的多線程測試,可以考慮把線程數量減少。
還有就是循環執行時間,也可以適當減少再試試。
『柒』 PHP使用代理方法獲取遠程網頁的代碼.
functioncurl_string($url,$user_agent,$proxy){
$ch=curl_init();
curl_setopt($ch,CURLOPT_PROXY,$proxy);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$user_agent);
curl_setopt($ch,CURLOPT_COOKIEJAR,"c:cookie.txt");
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_TIMEOUT,120);
$result=curl_exec($ch);
curl_close($ch);
return$result;
}
$url_page="http://www..com";
$user_agent="Mozilla/4.0";
$proxy="http://192.11.222.124:8000";//這里是http代理
$string=curl_string($url_page,$user_agent,$proxy);
echo$string;
『捌』 snoopy怎樣在PHP下運行,snoopy 怎麼用
把你郵箱告訴我,也許我會給你點幫助。。。
『玖』 $snoopy = new Snoopy; $snoopy->fetch($url); $contents = $snoopy->results; 這段php代碼是什麼意思呢
$snoopy = new Snoopy; 實例化一個類。
$snoopy->fetch($url); 執行類裡面的一個方法。
$contents = $snoopy->results; 類里執行結果放在類的一個對象里,然後賦值給$contents