版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表 单。Snoopy正确运行需要你的服务器的 PHP版本在4以上,并且支持PCREPerl Compatible Regular Expressions),基本的 LAMP!艮务都支持。一、Snoopy的一些特点:1. 抓取网页的内容 fetch2. 抓取网页的文本内容(去除HTML标签)fetchtext3. 抓取网页的链接,表单 fetchlinks fetchform4. 支持代理主机5. 支持基本的用户名 / 密码验证6. 支持设置 user_agent, referer( 来路), cookies 和 heade
2、r content( 头 文件)7. 支持浏览器重定向,并能控制重定向深度8. 能把网页中的链接扩展成高质量的 url( 默认)9. 提交数据并且获取返回值10. 支持跟踪HTML!架11. 支持重定向的时候传递cookies,要求php4以上就可以了,由于本身是 php 一个类,无需扩支持,服务器不支持 curl 时候的最好选择。二、类方法 :fetch($URI)这是为了抓取网页的内容而使用的方法。$URI参数是被抓取网页的URL地 址。抓取的结果被存储在 $this->results 中。如果你正在抓取的是一个框架, Sn oopy将会将每个框架追踪后存入数组中,然后存入$this
3、->results 。fetchtext($URI)本方法类似于fetch(),唯一不同的就是本方法会去除 HTML标签和其他的 无关数据,只返回网页中的文字内容。fetchform($URI)本方法类似于fetch(),唯一不同的就是本方法会去除 HTM标签和其他的 无关数据,只返回网页中表单内容 (form) 。fetchlinks($URI)本方法类似于fetch(),唯一不同的就是本方法会去除 HTM标签和其他的 无关数据,只返回网页中链接 (link) 。 默认情况下,相对链接将自动补全,转换成完整的URL。submit($URI,$formvars)本方法向$URL旨定的链接
4、地址发送确认表单。$formvars是一个存储表单参 数的数组。submittext($URI,$formvars)本方法类似于submit(),唯一不同的就是本方法会去除 HTMI标签和其他的 无关数据,只返回登陆后网页中的文字内容。submitlinks($URI)本方法类似于submit(),唯一不同的就是本方法会去除 HTMI标签和其他的 无关数据,只返回网页中链接 (link) 。 默认情况下,相对链接将自动补全,转换成完整的URL。三、类属性 : ( 缺省值在括号里 )$host 连接的主机$port 连接的端口 $proxy_host 使用的代理主机,如果有的话 $proxy_p
5、ort 使用的代理主机端口,如果有的话 $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 接受类型
6、(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 PHP4 Beta 4+)$maxframes 允许追踪的框架最大数量$status 抓取的 http 的状态$te
7、mp_dir 网页服务器能够写入的临时文件目录 (/tmp)$curl_path cURL binary 的目录 , 如果没有 cURL binary 就设置为 false四、以下是 demo include "Snoopy.class.php"$snoopy = new Snoopy;$snoopy->proxy_host = ""$snoopy->proxy_port = "8080"$snoopy->agent = "(compatible; MSIE4.01; MSN2.5; AOL4.0; Win
8、dows98)" $snoopy->referer = "$snoopy->cookies"SessionID" = 238472834723489l; $snoopy->cookies"favoriteColor" = "RED"$snoopy->rawheaders"Pragma" = "no-cache"$snoopy->maxredirs = 2;$snoopy->offsiteok = false;$snoopy->expa
9、ndlinks = false;$snoopy->user = "joe"$snoopy->pass = "bloe"if($snoopy->fetchtext("")echo " <PRE>".htmlspecialchars($snoopy->results)." </PRE>n" <BR> <BR>else <BR>echo "error fetching document: ".$sn
10、oopy->error."n"snoopy 采集 phpchina 示例<?php/ 采集 phpchina set_time_limit(0); require_once("Snoopy.class.php"); $snoopy=new Snoopy();/ 登陆论坛$submit_url = " $submit_vars"loginmode" = "normal"$submit_vars"styleid" = "1"$submit_vars"
11、;cookietime" = "315360000" $submit_vars"loginfield" = "username"$submit_vars"username" = "*" /你的用户名$submit_vars"password" = "*" / 你的密码 $submit_vars"questionid" = "0"$submit_vars"answer" = "&
12、quot; $submit_vars"loginsubmit" = "提 交"$snoopy->submit($submit_url,$submit_vars); if ($snoopy->results)/ 获取连接地址 $snoopy->fetchlinks(" $url=array();$url=$snoopy->results;/print_r($url); foreach ($url as $key=>$value) 地址/ 匹配 即论坛板块地址if?fid=)0-9*&sid=a-zA-Z6/i
13、",$value) unset($url$key);/print_r($url);/ 获取到板块数组 $url ,循环访问,此处获取第一个模块第一页的数据 $i=0;foreach ($url as $key=>$value)if ($i>=1)/ 测试限制break;else/ 访问该模块, 提取帖子的连接地址, 正式访问里需要提取帖子分页的数据, 后根据分页数据提取帖子数据$snoopy=new Snoopy();$snoopy->fetchlinks($value);$tie=array();$tie$i=$snoopy->results;/print_
14、r($tie);/ 转换数组foreach ($tie$i as $key=>$value)/ 匹配 D1&page=1&sid=iBLZfKif(!preg_match("/A(http:Wwww.phpchi VbbsVviewthread.php?t id=)0-9*&extra=page%3D1&page=0-9*&sid=a-zA-Z6/i",$va lue)unset($tie$i$key);/print_r($tie$i);/ 归类数组,将同一个帖子不同页面的内容放一个数组里$l
15、eft=''/ 连接左边公用地址$j=0;$page=array();foreach ($tie$i as $key=>$value)$left=substr($value,0,52);$m=0;foreach ($tie$i as $pkey=>$pvalue)/ 重组数组if (substr($pvalue,0,52)=$left)$page$j$m=$pvalue;$m+;$j+;/ 去除重复项开始/$page=array_unique($page); 只能用于一维数组$paget0=$page0;$nums=count($page);for ($n=1;$n
16、 <$nums;$n+)$paget$n=array_diff($page$n,$page$n-1);/ 去除多维数组重复值结束/ 去除数组空值unset($page);$page=array();/ 重新定义 page 数组$page=array_filter($paget);/print_r($page);$u=0;$title=array();$content=array();$temp=''$tt=array();foreach ($page as $key=>$value)/ 外围循环,针对一个帖子if (is_array($value)foreach (
17、$value as $k1=>$v1)/ 页内循环,针对一个帖子的 N 页$snoopy=new Snoopy();$snoopy->fetch($v1);$temp=$snoopy->results;/ 读取标题if (!preg_match_all("/ <h2>(.*) </h2>/i",$temp,$tt)echo "no title"exit;else$title$u=$tt11; unset($tt);/ 读取内容if (!preg_match_all("/ <div id="
18、;postmessage_0-91,8" class="t_msgfont">(.*) </div>/i",$temp,$tt) print_r($tt);echo "no content1"exit;elseforeach ($tt1 as $c=>$c2)$content$u.=$c2;else/ 直接取页内容 $snoopy=new Snoopy(); $snoopy->fetch($value); $temp=$snoopy->results;/ 读取标题if (!preg_match_all("/ <h2>(.*) </h2>/i",$temp,$tt)echo "no title"exit;else $title$u=$tt11; unset($tt);/ 读取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度教育培训合同:教育机构与学员就教育培训服务达成的一致协议包括培训内容、时间、费用等
- 草耙手动的市场需求与消费特点分析
- 2024年度城市基础设施建设与委托管理合同
- 2024年度广告代理合同:国际品牌在中国市场的广告代理
- 轻型货车市场发展预测和趋势分析
- 2024年度新能源产业材料采购合同
- 2024年度报关代理及清关服务合同
- 2024年度无人机监控设备采购与安装合同
- 2024年度出版合同的出版内容与出版数量
- 胸衣市场发展现状调查及供需格局分析预测报告
- 电力系统分析智慧树知到答案章节测试2023年东北电力大学
- 孤立性肺结节的CT诊断
- 公共关系学形考任务四答案
- 学生手机(电子手表)携带申请表
- 巴厘岛旅游介绍
- GB/T 37194.2-2018塑料聚苯硫醚(PPS)模塑和挤出材料第2部分:试样制备和性能测定
- 英语教师基本功大赛笔试试题(附答案)
- 化粪池危险防护应急预案
- GB/T 23446-2009喷涂聚脲防水涂料
- GB/T 20572-2019天然肠衣生产HACCP应用规范
- GB/T 19425-2003防伪技术产品通用技术条件
评论
0/150
提交评论