snoopy采集phpchina示例
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示例相关推荐
- 使用phpQuery采集图片示例–php采集方式之一
下载地址:http://code.google.com/p/phpquery/ 链接:https://pan.baidu.com/s/16uaFFwKtcdo6xBAqGl-_cw 提取码:xm9f ...
- 阿狸表情图采集代码示例
百度网盘:http://pan.baidu.com/s/1pJz7EER http://blog.jjonline.cn/phptech/175.html(转) 代码: <?PHPheader( ...
- PHP采集利器:Snoopy
PHP采集利器:Snoopy 2012-08-19 22:48:32| 分类: 默认分类 |字号 订阅 下载地址:http://sourceforge.net/projects/snoopy/ Sn ...
- snoopy(强大的PHP采集类) 详细介绍
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单,可以用来开发一些采集程序和小偷程序,本文章详细介绍snoopy的使用教程. Snoopy的一些特点: 抓取网页的内容 fe ...
- 百度网盘关了外链采集接口,如何采集百度网盘外链? 采集各大网盘搜索引擎
演示:文件搜wjsou.com 数据采集于各大网盘搜索引擎,并删去失效的. 1.使用谷歌自动义搜索.但谷歌咱访问不了. 2.但有些人能访问,VPN或在国外等,这些网盘搜索引擎有钱搞,那我就采集他们网站 ...
- Python爬虫违法吗?如何判断爬虫采集内容是否违法?
前言 随着大数据和人工智能的火爆,网络爬虫也被大家熟知起来:随之也出现一个问题,网络爬虫违法吗?符合道德吗?本文将详细介绍网络爬虫是否违法,希望帮助你解决爬虫是否违法带来的困扰. 网络爬虫大多数情况都 ...
- videoInput视频采集
videoInput视频采集 videoInput github地址 从中获取到videoInput.cpp和videoInput.h两个文件. 创建vs工程加入上面两个文件并创建main.cpp.m ...
- windows音频声卡采集
作者: 使徒保罗 邮箱:297329588szh@163.com 声明: 欢迎交流学习,如有任何疑问,请通过邮箱联系本人 环境: win10 64位+qt5.7(MINGW) 参考:[微软还回录音文档 ...
- FPGA之道(66)代码中的约束信息(三)存储器以及寄存器的相关约束
文章目录 前言 存储器的相关约束 ram_extract ram_style rom_extract rom_style 寄存器的相关约束 前言 这是这个话题的第三篇,最重要的前言是本文节选自:< ...
最新文章
- 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之三(配置文件读取)
- 微信小程序设置文本左对齐居中对齐右对齐setTextAlign的使用说明
- python【蓝桥杯vip练习题库】ADV-186排列式
- 《神探tcpdump第四招》-linux命令五分钟系列之三十八
- Envoy为什么能战胜Ngnix——线程模型分析篇
- Jaeger插件开发及背后的思考
- python run之后出现>>> runfile(‘F:xxx.py‘, wdir=‘F:xxx‘) 快速干掉它的办法
- C#LeetCode刷题之#171-Excel表列序号(Excel Sheet Column Number)
- Pandas数据类型及操作
- java php json转字符串_php json字符串转为数组或对象
- RTOS原理与实现13(完):内核裁剪与移植
- (Twinkle Tray)快速调整外接显示器屏幕亮度
- 如何将html页面打印出来,网页太长如何全部打印_怎样打印整个网页内容-win7之家...
- 计算机找不到海信电视,海信电视突然看不了电视直播了,怎么解决?当贝市场良心分享...
- Z世代成为消费新主力,我国潮牌营销洞察报告​
- 汇编jnl_汇编指令 JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL
- 晶振电路的PCB设计
- 用计算机弹音乐乐谱小幸运,小幸运——歌词和弦版本钢琴谱
- linux qt fscanf,fscanf QT小部件C++
- EMC文件服务器,emc存储服务器