snoopy php网页抓取工具( 类的方法类属性类使用方法的实例都是从本站)

优采云 发布时间: 2021-12-20 07:15

  snoopy 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类抓图

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线