>  기사  >  백엔드 개발  >  Snoopy PHP采集类使用说明详解

Snoopy PHP采集类使用说明详解

WBOY
WBOY원래의
2016-06-20 13:02:391106검색

Snoopy PHP采集类使用说明详解

Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,提交表单。

Snoopy正确运行需要你的服务器的PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),基本的LAMP服务都支持。

一、Snoopy采集类的一些特点:  

1.抓取网页的内容 fetch  

2.抓取网页的文本内容 (去除HTML标签) fetchtext  

3.抓取网页的链接,表单 fetchlinks fetchform  

4.支持代理主机  

5.支持基本的用户名/密码验证  

6.支持设置user_agent, referer(来路), cookies和header content(头文件)  

7.支持浏览器重定向,并能控制重定向深度  

8.能把网页中的链接扩展成高质量的url(默认)  

9.提交数据并且获取返回值  

10.支持跟踪HTML框架  

11.支持重定向的时候传递cookies,要求php4以上就可以了,由于本身是php一个类,无需扩支持,服务器不支持curl时候的最好选择。

二、Snoopy采集类方法:

1、fetch($URI) 

这是为了抓取网页的内容而使用的方法。$URI参数是被抓取网页的URL地址。抓取的结果被存储在 $this->results 中。如果你正在抓取的是一个框架,Snoopy将会将每个框架追踪后存入数组中,然后存入

 $this->results。

2、fetchtext($URI) 

本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中的文字内容。

3、fetchform($URI) 

本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中表单内容(form)。

4、fetchlinks($URI) 

本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。默认情况下,相对链接将自动补全,转换成完整的URL。

5、submit($URI,$formvars) 

本方法向$URL指定的链接地址发送确认表单。$formvars是一个存储表单参数的数组。

6、submittext($URI,$formvars) 

本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回登陆后网页中的文字内容。

7、submitlinks($URI) 

本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。 

默认情况下,相对链接将自动补全,转换成完整的URL。

三、Snoopy采集类属性: (缺省值在括号里)

$host 连接的主机 
$port 连接的端口 
$proxy_host 使用的代理主机,如果有的话 
$proxy_port 使用的代理主机端口,如果有的话 
$agent 用户代理伪装 (Snoopy v0.1) 
$referer 来路信息,如果有的话 
$cookies cookies, 如果有的话 
$rawheaders 其他的头信息, 如果有的话 
$maxredirs 最大重定向次数, 0=不允许 (5) 
$offsiteok whether or not to allow redirects off-site. (true) 
$expandlinks 是否将链接都补全为完整地址 (true) 
$user 认证用户名, 如果有的话 
$pass 认证用户名, 如果有的话 
$accept http 接受类型 (image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*) 
$error 哪里报错, 如果有的话 
$response_code 从服务器返回的响应代码 
$headers 从服务器返回的头信息 
$maxlength 最长返回数据长度 
$read_timeout 读取操作超时 (requires PHP 4 Beta 4+) 
设置为0为没有超时 
$timed_out 如果一次读取操作超时了,本属性返回 true (requires PHP 4 Beta 4+) 
$maxframes 允许追踪的框架最大数量 
$status 抓取的http的状态 
$temp_dir 网页服务器能够写入的临时文件目录 (/tmp) 
$curl_path cURL binary 的目录, 如果没有cURL binary就设置为 false

四、Snoopy采集类项目地址:

http://sourceforge.net/projects/snoopy/

五、Snoopy采集类实例代码  

1、Snoopy采集类基础实例代码

<p>include "Snoopy.class.php";   </p><p> $snoopy = new Snoopy;    </p><p> $snoopy->proxy_host = "www.baidu.com";   </p><p> $snoopy->proxy_port = "8080";    </p><p> $snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)";   </p><p> $snoopy->referer = "http://www.baidu.com/";     </p><p>$snoopy->cookies["SessionID"] = 238472834723489l;    </p><p>$snoopy->cookies["favoriteColor"] = "RED";     </p><p>$snoopy->rawheaders["Pragma"] = "no-cache";    </p><p>$snoopy->maxredirs = 2;    </p><p>$snoopy->offsiteok = false;   </p><p> $snoopy->expandlinks = false;    </p><p> $snoopy->user = "joe";    </p><p>$snoopy->pass = "bloe";    </p><p>if($snoopy->fetchtext("http://www.baidu.com"))    {          </p><p>echo " <PRE>".htmlspecialchars($snoopy->results)." 
n"; 
   

 } 

 else 

echo "error fetching document: ".$snoopy->error."n";   

2、 获取指定url内容

$url='http://www.baidu.com';<br />include('snoopy.php');<br />$snoopy=new Snoopy;<br />$snoopy->fetch($url);//获取所有内容 <br />echo $snoopy->results;//显示结果 <br />$snoopy->fetchtext //获取文本内容(去掉html代码) <br />$snoopy->fetchlinks //获取页面所有链接 <br />$snoopy->fetchform //获取页面表单信息

3 、提交表单

include 'snoopy.php';<br />$snoopy=new Snoopy;<br />$formvars['username']='admin';<br />$formvars['pwd']='admin';<br />$action='http://www.baidu.com';//表单提交地址 <br />$snoopy->submit($action,$formvars);//$formvars为提交的数组 <br />echo $snoopy->results;//获取表单提交后的 返回的结果 <br />$snoopy->submittext;//提交后只返回去除html的文本 <br />$snoopy->submitlinks;//提交后只返回链接

4、 使用Snoopy来伪装

$formvars['username']='admin';<br />$formvars['pwd']='admin';<br />$action='http://www.baidu.com';<br />include 'snoopy.php';<br />$snoopy=new Snoopy;<br />$snoopy->cookies['PHPSESSID']='fc206b1918bd522cc863p36890e6notef7';//伪装sessionid <br />$snoopy->agent='(compatible;MSIE 4.01;MSN 2.5;AOL 4.0;Windows 98)';//伪装浏览器 <br />$snoopy->referer='http://www.baidu.com';//伪装来源页地址 http_referer <br />$snoopy->rawheaders['Pragma']='no-cache';//cache 的http头信息 <br />$snoopy->rawheaders['X_FORWARDED_FOR']='127.0.0.1';//伪装ip <br />$snoopy->submit($action,$formvars);<br />echo $snoopy->results;


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.