phpsnoopy
『壹』 高手速来拿高分!!【php采集:浏览器能打开,php却无法采集。】 刚才不小心关闭了。再开!
你服务器的问题吧 为什么我能
『贰』 查看php 支不支持snoopy函数
echo function_exists(函数名称);
输出1或者true表示支持
输出0或者false表示不支持
『叁』 PHP snoopy采集类怎样采集我想要的内容
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单,可以用来开发一些采集程序和小偷程序,本文章详细介绍snoopy的使用教程。
Snoopy的一些特点:
抓取网页的内容 fetch
抓取网页的文本内容 (去除HTML标签) fetchtext
抓取网页的链接,表单 fetchlinks fetchform
支持代理主机
支持基本的用户名/密码验证
支持设置 user_agent, referer(来路), cookies 和 header content(头文件)
支持浏览器重定向,并能控制重定向深度
能把网页中的链接扩展成高质量的url(默认)
提交数据并且获取返回值
支持跟踪HTML框架
支持重定向的时候传递cookies
要求php4以上就可以了 由于本身是php一个类 无需扩支持 服务器不支持curl时候的最好选择,
Snoopy类方法及示例:
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)
本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。
默认情况下,相对链接将自动补全,转换成完整的URL。
『肆』 PHP跨站请求
有很多方法
1、自己做包,实际上就是用文件函数一行行地写,摸拟post提交;
2、一般函数通讯,curl
3、用snoopy的类。这是目前用得最多的。
我来举个例子给你:
< ?php
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;
?>
详细出处参考:http://www.jb51.net/article/14181.htm
『伍』 用php的Snoopy如何抓取网页的验证码呢
curl就可以了
<?php
header('Content-Type:image/png');
$url="图片链接";//图片链接
$ch=curl_init();
//Cookie:PHPSESSID=
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_COOKIE,'这里是你的cookies');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_TIMEOUT,0);//忽略超时
curl_setopt($ch,CURLOPT_NOBODY,false);
$str=curl_exec($ch);
curl_close($ch);
『陆』 Snoopy采集,thinkphp使用snoopy采集数据
呵呵。这种情况,看看是不是程序那里有错误了吧。
一般情况不会出现这么大内存需求的。
另外,如果你开启的是snoopy的多线程测试,可以考虑把线程数量减少。
还有就是循环执行时间,也可以适当减少再试试。
『柒』 PHP使用代理方法获取远程网页的代码.
functioncurl_string($url,$user_agent,$proxy){
$ch=curl_init();
curl_setopt($ch,CURLOPT_PROXY,$proxy);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_USERAGENT,$user_agent);
curl_setopt($ch,CURLOPT_COOKIEJAR,"c:cookie.txt");
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_TIMEOUT,120);
$result=curl_exec($ch);
curl_close($ch);
return$result;
}
$url_page="http://www..com";
$user_agent="Mozilla/4.0";
$proxy="http://192.11.222.124:8000";//这里是http代理
$string=curl_string($url_page,$user_agent,$proxy);
echo$string;
『捌』 snoopy怎样在PHP下运行,snoopy 怎么用
把你邮箱告诉我,也许我会给你点帮助。。。
『玖』 $snoopy = new Snoopy; $snoopy->fetch($url); $contents = $snoopy->results; 这段php代码是什么意思呢
$snoopy = new Snoopy; 实例化一个类。
$snoopy->fetch($url); 执行类里面的一个方法。
$contents = $snoopy->results; 类里执行结果放在类的一个对象里,然后赋值给$contents