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;

}

?>

snoopy采集phpchina示例相关推荐

  1. 使用phpQuery采集图片示例–php采集方式之一

    下载地址:http://code.google.com/p/phpquery/ 链接:https://pan.baidu.com/s/16uaFFwKtcdo6xBAqGl-_cw 提取码:xm9f ...

  2. 阿狸表情图采集代码示例

    百度网盘:http://pan.baidu.com/s/1pJz7EER http://blog.jjonline.cn/phptech/175.html(转) 代码: <?PHPheader( ...

  3. PHP采集利器:Snoopy

    PHP采集利器:Snoopy 2012-08-19 22:48:32|  分类: 默认分类 |字号 订阅 下载地址:http://sourceforge.net/projects/snoopy/ Sn ...

  4. snoopy(强大的PHP采集类) 详细介绍

    Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单,可以用来开发一些采集程序和小偷程序,本文章详细介绍snoopy的使用教程. Snoopy的一些特点: 抓取网页的内容 fe ...

  5. 百度网盘关了外链采集接口,如何采集百度网盘外链? 采集各大网盘搜索引擎

    演示:文件搜wjsou.com 数据采集于各大网盘搜索引擎,并删去失效的. 1.使用谷歌自动义搜索.但谷歌咱访问不了. 2.但有些人能访问,VPN或在国外等,这些网盘搜索引擎有钱搞,那我就采集他们网站 ...

  6. Python爬虫违法吗?如何判断爬虫采集内容是否违法?

    前言 随着大数据和人工智能的火爆,网络爬虫也被大家熟知起来:随之也出现一个问题,网络爬虫违法吗?符合道德吗?本文将详细介绍网络爬虫是否违法,希望帮助你解决爬虫是否违法带来的困扰. 网络爬虫大多数情况都 ...

  7. videoInput视频采集

    videoInput视频采集 videoInput github地址 从中获取到videoInput.cpp和videoInput.h两个文件. 创建vs工程加入上面两个文件并创建main.cpp.m ...

  8. windows音频声卡采集

    作者: 使徒保罗 邮箱:297329588szh@163.com 声明: 欢迎交流学习,如有任何疑问,请通过邮箱联系本人 环境: win10 64位+qt5.7(MINGW) 参考:[微软还回录音文档 ...

  9. FPGA之道(66)代码中的约束信息(三)存储器以及寄存器的相关约束

    文章目录 前言 存储器的相关约束 ram_extract ram_style rom_extract rom_style 寄存器的相关约束 前言 这是这个话题的第三篇,最重要的前言是本文节选自:< ...

最新文章

  1. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之三(配置文件读取)
  2. 微信小程序设置文本左对齐居中对齐右对齐setTextAlign的使用说明
  3. python【蓝桥杯vip练习题库】ADV-186排列式
  4. 《神探tcpdump第四招》-linux命令五分钟系列之三十八
  5. Envoy为什么能战胜Ngnix——线程模型分析篇
  6. Jaeger插件开发及背后的思考
  7. python run之后出现>>> runfile(‘F:xxx.py‘, wdir=‘F:xxx‘) 快速干掉它的办法
  8. C#LeetCode刷题之#171-Excel表列序号(Excel Sheet Column Number)
  9. Pandas数据类型及操作
  10. java php json转字符串_php json字符串转为数组或对象
  11. RTOS原理与实现13(完):内核裁剪与移植
  12. (Twinkle Tray)快速调整外接显示器屏幕亮度
  13. 如何将html页面打印出来,网页太长如何全部打印_怎样打印整个网页内容-win7之家...
  14. 计算机找不到海信电视,海信电视突然看不了电视直播了,怎么解决?当贝市场良心分享...
  15. Z世代成为消费新主力,我国潮牌营销洞察报告​
  16. 汇编jnl_汇编指令 JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL
  17. 晶振电路的PCB设计
  18. 用计算机弹音乐乐谱小幸运,小幸运——歌词和弦版本钢琴谱
  19. linux qt fscanf,fscanf QT小部件C++
  20. EMC文件服务器,emc存储服务器

热门文章

  1. 汽车零部件电磁兼容整改案例解析
  2. 挖矿病毒常见处置方法
  3. 转:人只能领导他喜欢的人
  4. java的字符串复制_java字符串常用方法
  5. C语言百日刷题第七天
  6. 华科软件学院 软件体系结构考试内容回忆
  7. Centos7的vim文件编辑基本操作
  8. 2011年英语1Text2生词
  9. 高中计算机阅卷要求,给考生:了解中考电脑阅卷规则,读完多拿20分!
  10. Bootstrap学习1:bootstrap4.0基础