snoopy php网页抓取工具( 类的方法类属性类使用方法的实例都是从本站)
优采云 发布时间: 2021-12-20 07:15snoopy php网页抓取工具(
类的方法类属性类使用方法的实例都是从本站)
snoopy.class.php采集 模拟登录类
说到它,不得不说它的强大。你为什么这么说?我们以最常用的例子——模拟登录(当然它的功能不止这一个)。
首先有一个网页,然后我们引用它来过滤一些内容,获取我们想要的所有表单内容,然后获取登录参数,然后提交,这样我们就可以模拟登录了。
登录后,我们还可以利用其属性伪装cookie、代理、IP等信息定期发布,如留言等...
史努比类库下载地址:snoopy.class.php
类的官方下载地址
V2.0 类的版本
回到主线,我们先了解一下它的特点,掌握它的特点对我们理解它有很大的帮助!
1、方便抓取网页的内容 fetch
2、方便抓取网页的文字(去掉HTML代码)fetchtext
3、方便抓取网页的链接 fetchlinks
4、支持代理主机
5、支持基本的用户/密码认证模式
6、支持自定义用户agent,referer,cookies和header内容
7、支持浏览器转向,并能控制转向深度
8、能把网页中的链接扩展成高质量的url(默认)
9、方便提交数据并且获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持再转向的时候传递cookies
类方法
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,$formvars)
本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。默认情况下,相对链接将自动补全,转换成完整的URL。
类属性
$host 连接的主机
$port 连接的端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 来路信息,如果有的话
$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
如何使用类
以下示例均来自本站,方便大家理解。但是你在使用模拟登录的时候,应该自己下载一些例子来演示,不要用我的网站来玩,哈哈...
header("Content-type: text/html; charset=utf-8");
include_once 'Snoopy.class.php';
$snoopy = new Snoopy();
1、fetch 获取网页内容
$snoopy ->fetch('http://li-jialin.com');
echo $snoopy->results;
2、fetchtext 获取网页的所有文本内容
$snoopy ->fetchtext('http://li-jialin.com');
echo $snoopy->results;
3、fetchform 获取网页的表单内容
$snoopy ->fetchform('http://li-jialin.com');
echo $snoopy->results;
4、fetchlinks 获取网页中的所有链接
$snoopy ->fetchlinks("http://li-jialin.com");
print_r($snoopy->results);
5、提交确认表以显示网页
//模拟登录
$URI = "http://li-jialin.com/admin/login/index.html";
$formvars["username"] = "********";
$formvars["password"] = "********";
$formvars["kouling"] = "********";
$snoopy->submit($URI, $formvars);
print $snoopy->results;
6、submittext 确认表单显示文本内容
$URI = "http://li-jialin.com/admin/login/index.html";
$formvars["username"] = "********";
$formvars["password"] = "********";
$formvars["kouling"] = "********";
$snoopy->submittext($URI, $formvars);
print $snoopy->results;
7、submitlinks 确认表显示链接内容
$URI = "http://li-jialin.com/admin/login/index.html";
$formvars["username"] = "********";
$formvars["password"] = "********";
$formvars["kouling"] = "********";
$snoopy->submitlinks($URI, $formvars);
print $snoopy->results;
8、模拟IP、cookie、浏览器等。
$URI = "http://li-jialin.com/admin/login/index.html";
$formvars["username"] = "********";
$formvars["password"] = "********";
$formvars["kouling"] = "********";
//伪装
$snoopy->cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7'; //伪装sessionid
$snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; //伪装浏览器
$snoopy->referer = "http://bbs.bfnz.cn"; //伪装来源页地址 http_referer
$snoopy->rawheaders["Pragma"] = "no-cache"; //cache 的http头信息
$snoopy->rawheaders["X_FORWARDED_FOR"] = "127.0.0.101"; //伪装ip
$snoopy->submit($URI, $formvars);
echo $snoopy->results;
其他相关文章
1、SNOOPY实现模拟登录
2、 使用PHP的Snoopy类抓图