snoopy采集phpchina示例
<?php
//采集phpchina
set_time_limit(0);
require_once("Snoopy.class.php");
$snoopy=new Snoopy();
//登陆论坛
$submit_url = "http://www.phpchina.com/bbs/logging.php?action=lo gin";
$submit_vars["loginmode"] = "normal";
$submit_vars["styleid"] = "1";
$submit_vars["cookietime"] = "";
$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);
$snoopy->fetchlinks("http://www.phpchina.com/bbs");
$url=array();
$url=$snoopy->results;
//print_r($url);
foreach ($url as $key=>$value)
{
//匹配http://www.phpchina.com/bbs/forumdisplay.php?fid=1 56&sid=VfcqTR地址即论坛板块地址
if (!preg_match("/^(http:\/\/www\.phpchina\.com\/bbs\ /forumdisplay\.php\?fid=)[0-9]*&sid=[a-zA-Z]{6}/i", $value))
{
unset($url[$key]);
}
}
//print_r($url);
//获取到板块数组$url,循环访问,此处获取第一个模块第一页的数据
$i=0;
foreach ($url as $key=>$value)
{
if ($i>=1)
{
//测试限制
break;
{
//匹配http://www.phpchina.com/bbs/viewthread.php?tid=681 27&extra=page%3D1&page=1&sid=iBLZfK
if (!preg_match("/^(http:\/\/www\.phpchina\.com\/bbs\ /viewthread\.php\?tid=)[0-9]*&extra=page\%3D1&a mp;page=[0-9]*&sid=[a-zA-Z]{6}/i",$value))
{
unset($tie[$i][$key]);
}
}
//print_r($tie[$i]);
//归类数组,将同一个帖子不同页面的内容放一个数组里
$left='';//连接左边公用地址
$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)
{
for ($n=1;$n<$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 ($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]=$tt[1][1];
}
unset($tt);
//读取内容
if (!preg_match_all("/<div id=\"postmessage_[0-9]{1,8}\" class=\"t_msgfont\">(.*)<\/div>/i",$temp,$tt))
{
print_r($tt);
echo "no content1";
exit;
}
else
{
foreach ($tt[1] 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]=$tt[1][1];
}
unset($tt);
//读取内容
if (!preg_match_all("/<div id=\"postmessage_[0-9]*\" class=\"t_msgfont\">(.*)<\/div>/i",$temp,$tt))
{
echo "no content2";
exit;
}
else
{
foreach ($tt[1] as $c=>$c2)
{
$content[$u].=$c2;
}
}
}
<?php
//采集phpchina
set_time_limit(0);
require_once("Snoopy.class.php");
$snoopy=new Snoopy();
//登陆论坛
$submit_url = "http://www.phpchina.com/bbs/logging.php?action=lo gin";
$submit_vars["loginmode"] = "normal";
$submit_vars["styleid"] = "1";
$submit_vars["cookietime"] = "";
$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);
if ($snoopy->results)
{
//获取连接地址
$snoopy->fetchlinks("http://www.phpchina.com/bbs");
$url=array();
$url=$snoopy->results;
//print_r($url);
foreach ($url as $key=>$value)
{
//匹配http://www.phpchina.com/bbs/forumdisplay.php?fid=1 56&sid=VfcqTR地址即论坛板块地址
if (!preg_match("/^(http:\/\/www\.phpchina\.com\/bbs\ /forumdisplay\.php\?fid=)[0-9]*&sid=[a-zA-Z]{6}/i", $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_r($tie);
//转换数组
foreach ($tie[$i] as $key=>$value)
{
//匹配http://www.phpchina.com/bbs/viewthread.php?tid=681 27&extra=page%3D1&page=1&sid=iBLZfK
if (!preg_match("/^(http:\/\/www\.phpchina\.com\/bbs\ /viewthread\.php\?tid=)[0-9]*&extra=page\%3D1&a mp;page=[0-9]*&sid=[a-zA-Z]{6}/i",$value))
{
unset($tie[$i][$key]);
}
}
//print_r($tie[$i]);
//归类数组,将同一个帖子不同页面的内容放一个数组里
$left='';//连接左边公用地址
$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);只能用于一维数组
$paget[0]=$page[0];
$nums=count($page);
for ($n=1;$n<$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 ($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]=$tt[1][1];
}
unset($tt);
//读取内容
if (!preg_match_all("/<div id=\"postmessage_[0-9]{1,8}\" class=\"t_msgfont\">(.*)<\/div>/i",$temp,$tt))
{
print_r($tt);
echo "no content1";
exit;
}
else
{
foreach ($tt[1] 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]=$tt[1][1];
}
unset($tt);
//读取内容
if (!preg_match_all("/<div id=\"postmessage_[0-9]*\" class=\"t_msgfont\">(.*)<\/div>/i",$temp,$tt))
{
echo "no content2";
exit;
}
else
{
foreach ($tt[1] as $c=>$c2)
{
$content[$u].=$c2;
}
}
}
$u++;
}
print_r($content);
}
$i++;
}
}
else
{
echo "login failed";
exit;
}
?>
发表评论
-
windows下用Apache配置虚拟主机
2012-09-06 22:15 697商家网址站终于完成了,网址:http://www.57sj.n ... -
php通过腾迅的api接口获取ip地址以及所在城市
2012-08-14 20:12 1540网上搜刮的一个根据ip获取用户地址的php代码,让人欣喜的是他 ... -
获取某字符串的字符编码
2012-08-14 18:11 805$encode = mb_detect_encoding($a ... -
【转】正确拆分中英文混合字符串的函数
2012-08-14 17:09 1926function arr_split_zh( $te ... -
jQuery处理AJAX返回的数据
2012-08-14 10:59 1164使用$.get方法发送AJAX请求的时候,我们常常使用eval ... -
【转】PHPMailer 类综合应用
2012-08-13 19:36 956PHPMailer 类综合应用 PHPMailer ... -
Snoopy.class.php文件采集
2012-08-07 20:48 1119获取指定url内容 PHP代码 <? ... -
Snoopy.class.php
2012-08-07 20:37 857<?php /****************** ... -
PHP检测内网服务器状态的方法!
2012-08-05 17:57 1726某项目有功能需求为在OA里检测用户服务器的运行状态,服务器均为 ... -
【转】在Thinkphp中使用AJAX实现无刷新分页
2012-07-22 22:13 11236在Thinkphp目录的Lib\ORG\Uti ... -
ThinkPHP模板输入一维数组
2012-07-22 18:59 1247<foreach name="list&quo ... -
【转】MYSQL删除表的记录后如何使ID从1开始
2012-07-17 15:52 1058MYSQL删除表的记录后如何使ID从1开始 htt ... -
[转]ThinkPHP中分页加上搜索
2012-07-14 23:07 8091ThinkPHP 分页可以很容易的实现对不固定查询参数的支持。 ... -
mysqldump 常用备份选项,只备份数据或结构的方法
2012-07-13 18:14 779mysqldump 常用备份选项,只备份数据或结构的方法, ... -
用PHP+批处理+计划任务实现OA系统远程修改客户服务器密码
2012-07-12 15:31 1790最近接到一个朋友的单子,他是做网吧维护的,手下30多家 ... -
[转]php使用mysqldump命令导出数据 文件内容为空 的解决(密码不能为空)
2012-07-12 11:06 959服务器环境win2003+Apache+PHP5.2 我通过 ... -
[转]分享一个thinkphp提示页面代码
2012-07-09 11:55 4948下面是代码:已经解决了官方的错误提示页面不能正常跳转的情况。 ... -
【转】ThinkPHP页面跳转success与error方法,PHP
2012-07-09 11:51 1546ThinkPHP 页面跳转 ThinkPHP 提供了 ... -
PHP写入文件时回车的问题
2012-07-09 11:47 725在windows系统里,\r\n标示回车,在写PHP代 ...
相关推荐
snoopy采集入门,有DEMO,容易学习
PHP采集利器snoopy应用详解 Snoopy是一个PHP类,用来模拟浏览器的功能,可以获取网页内容,发送表单。Snoopy正确运行需要你的服务器的PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),基本的...
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。
使用Snoopy来模拟登陆,然后采集登陆后的页面非常管用! Snoopy的特点: 1、抓取网页的内容 fetch 2、抓取网页的文本内容 (去除HTML标签) fetchtext 3、抓取网页的链接,表单 fetchlinks fetchform 4、支持代理主机 ...
主要介绍了PHP采集类snoopy详细介绍,PHP采集类snoopy的详细使用教程,需要的朋友可以参考下
snoopy
基于PHP的snoopy 强大的PHP采集类.zip
使用php curl族的多线程函数,并结合开源的snoopy 和simple_html_dom 对html的处理,使采集特定区域的内容轻松起来。当然,您也可以设置通过正则来采集。程序也可以采集远程图片到本地。详细使用说明见readme.html. ...
Snoopy PHP 类
基于PHP的snoopy强大的PHP采集类源码.zip
Snoopy.class.php,实现网页下载, 网页采集类,Snoopy的一些功能特点: 抓取网页的内容 fetch() 抓取网页的文本内容 (去除HTML标签) fetchtext() 抓取网页的链接,表单 fetchlinks() fetchform() 支持代理...
PHP实例开发源码—snoopy 强大的PHP采集类.zip
Snoopy 是一个非常强大的PHP类,下面是详细介绍Snoopy.class.php源文件的内容。希望对大家有所帮助 Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。 Snoopy的一些特点: 1抓取网页的内容 ...
snoopy 是一个很强大的搜索类,做页面抓取非常的合适
snoopy的使用方法,snoopy教程详解。快速高效地页面信息爬取方式。
主要介绍了PHP采集类Snoopy抓取图片实例,Snoopy是一个强大的PHP采集类,可以用来开发一些采集程序和小偷程序,需要的朋友可以参考下
snoopy是一个php类,用来模仿web浏览器的功能,它能完成获取网页内容和发送表单的任务。 下面是它的一些特征: 1、方便抓取网页的内容 2、方便抓取网页的文字(去掉HTML代码) 3、方便抓取网页的链接 4、支持代理...
主要介绍了PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能,结合实例形式分析了Snoopy框架的使用及正则匹配相关操作技巧,需要的朋友可以参考下
Snoopy中文手册 snoopy是一个php类,用来模仿web浏览器的功能,它能完成获取网页内容和发送表单的任务。 下面是它的一些特征: 1、方便抓取网页的内容 2、方便抓取网页的文字(去掉HTML代码) 3、方便抓取网页...