PHP Snoopy網頁抓取工具(淺談)

snoopy是一個php類,用來模仿web瀏覽器的功能,它能完成獲取網頁內容和發送表單的任務。

下面是它的一些特徵:

1、方便抓取網頁的內容11111111111

2、方便抓取網頁的文字(去掉HTML代碼)

3、方便抓取網頁的鏈接

4、支持代理主機

5、支持基本的用戶/密碼認證模式

6、支持自定義用戶agent,referer,cookies和header內容

7、支持瀏覽器轉向,並能控制轉向深度

8、能把網頁中的鏈接擴展成高質量的url(默認)

9、方便提交數據並且獲取返回值

10、支持跟蹤HTML框架(v0.92增加)

11、支持再轉向的時候傳遞cookies

下面是簡單的例子,比如說我們抓取我的blog的文字

include "Snoopy.class.php";

$snoopy = new Snoopy;

$snoopy->fetchtext("http://www.phpobject.net/blog");

echo $snoopy->results;

^_^,不錯把,在比如抓取鏈接

include "Snoopy.class.php";

$snoopy = new Snoopy;

$snoopy->fetchlinks("http://www.phpobject.net/blog");

print_r($snoopy->results);

使用snoopy提交數據實現登陸

模擬登陸可以用curl或者socket來實現,當curl需要服務器相應的啟用curl module,自己socket實現相對比較麻煩,使用snoopy就簡單了很多啦。

在這裡,我們使用喜悅國際村做為例子。(^_^,純屬研究)

首先,我們要獲取到登陸需要發送什麼字段,目標地址是什麼。這裡我們使用snoopy的fetchform來實現。

include "Snoopy.class.php";

$snoopy = new Snoopy;

$snoopy->fetchform("http://www.phpx.com/happy/logging.php?action=login");

print $snoopy->results;

當然你也可以直接查看http://www.phpx.com/happy/…的源代碼來實現,不過這樣更加方便把。這裡,我們獲取到目標和提交的數據,下一步就可以實現模擬登陸了。

代碼如下:

<code>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;/<code>


分享到:


相關文章: