php采集器分析功能实现

a)URL地址分析
根据数据库中采集规则的定义字段,分为一页地址,多页地址,**—**页地址三种形式。

//流程控制
switch (URL地址形式)
{
case 1:
//单页的设置
$url[0] = URL地址;
break;
case 2:
//多页的设置
$manypage = explode("/n",$row->URL地址); //分割一行一个网址
$url = $manypage;
break;
case 3:
//XX页—XX页的设置
$rowurl = explode('[分页]', $row->URL地址);
$a_num = 0;
for ($a=$a_num;$a<=$row->结束页;$a++)
{
$url[$a] = $rowurl[0].$a.$rowurl[1];
if ($a==0)
{
$url[$a] = $rowurl[0].$row->url_start.$rowurl[1];
}
}
}

b)内容页面链接分析

//载入URL地址页
$handles = @file_get_contents($url);
//正则表达式匹配链接规则
preg_match_all ("/".链接规则."/is",$handles,$matches);
//所得内容页面链接地址写入数据库Link表
INSERT INTO `links` ( `title` , `url` , `rules` , `date` )

c)延时函数

//参考:http://cn.php.net/manual/zh/ref.curl.php
$ch = curl_init();
$timeout = 10; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$handles = curl_exec($ch);
curl_close($ch);

d)分页分析:全部列出形式

//正则匹配分页区域
preg_match ("/".分页规则."/is",$buffer, $regs2);
//查找每个分割里面的网址 for保证网址不重复
preg_match_all ("/".'<[^<>]*(href|value)=(/”|/’)?([^/’/”<>]*)(/”|/’)?[^<>]*>’.”/is”,$regs2[1],$regs3);
for ($i = 0; $i <= count($regs3[3]); $i++)
{
$gethttp = $string->gethttp($regs3[3][$i]);
$buffer2 = @file_get_contents($gethttp);
//延时
if(empty($buffer2)){
if($phpcurl_init == “yes”){
$ch = curl_init();
$timeout = 10; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, $regsar[$i]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$buffer2 = curl_exec($ch);
curl_close($ch);
}
preg_match (”/”.内容规则.”/is”,$buffer2, $regss);
$cont .= $regss[1];
}

e)分页分析:上下页形式

if(preg_match ("/".分页规则."/is",$buffer, $ljregs))
{
while($ljregs[1] != "")
{
$ljregs[1] = $string->gethttp($ljregs[1]);
$buffer = @file_get_contents($ljregs[1]);
//延时
if(empty($buffer)){
if($phpcurl_init == "yes"){
$ch = curl_init();
$timeout = 10; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, $ljregs[1]);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$buffer = curl_exec($ch);
curl_close($ch);
}
}
preg_match ("/".$body_rule."/is",$buffer, $regs) ;
$cont .= $regs[1];
}
}

f)Cookie部分

$string->fileFsock(url, cookie内容);
//fsockopen采集
function fileFsock($url,$cookie)
{
set_time_limit(0);
$cookie = $this->getCookie($cookie);
preg_match("/^(http:)([^//]+)(.*)/i", $url, $matches);
$fp = fsockopen($matches[2], 80, $errno, $errstr, 30);
if(!$fp) {
echo "$errstr ($errno)
/n”;
} else {
$out = “POST $matches[3] HTTP/1.1/r/n”;
$out .= “Host:$matches[2]/r/n”;
$out .= “Cookie: “.$cookie.”/r/n”;
$out .= “Connection: Close/r/n/r/n”;
fputs($fp, $out);
fclose($fp);
}
}

g)其他相关函数:给无HOST头的网址加入HOST

function gethttp($url)
{
$url = trim($url);
if(!preg_match ('/http:/i',$url,$out))
{
if(preg_match ('/^(/.{2})//(.+)?/i',$url,$out)) //带有目录的网址 加+网址
{
return $this->outurl[3].$out[2];//有目录的 或有/的
}

if(preg_match ('/^(/.//)(.+)?/i',$url,$out))//将.去掉
{
return $this->outurl[1].$out[2]; //无目录的网址 加上网址+目录
}

if(preg_match ('/^//(.+)/i',$url,$out)) //带有目录的网址 加+网址
{
return $this->outurl[2].$out[1];//有目录的 或有/的
}

return $this->outurl[1].$url;

}else{
return $url; //有HTTP的 不需要任何操作
}

}

php采集器分析功能实现相关推荐

  1. Mocha NTA基于单采集器实现的多种流协议分析

    业内主流的Flow协议技术         网络业界基于流(Flow)的分析技术主要有NetFlow.sFlow.cFlow和NetStreem四种.NetFlow是Cisco公司的独有技术,它既是一 ...

  2. matlab怎么控制采集卡,用MATLAB控制NI采集卡实现高精度数据采集与分析功能-l采.pdf...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspmatlab 用MATLAB控制NI采集卡实现高精度数据采集与分 ...

  3. 利用PHP制作简单的内容采集器的原理分析

    利用PHP制作简单的内容采集器的原理分析 2008-12-12 11:24 前几天做了个小说连载的程序,因为怕更新麻烦,顺带就写了个采集器,采集八路中文网的,功能比较简单,不能自定义规则,不过大概思路 ...

  4. 设置webhook_数据采集教程_智能模式_如何设置Webhook功能_后羿采集器

    后羿采集器支持Webhook功能,通过使用该功能,后羿采集器可以将采集到的数据发布到HTTP地址. Webhook的设置在启动任务的设置中,具体如下图所示: 开启Webhook功能之后,采集到的数据将 ...

  5. 免费采集器:全方位深度分析!

    在如今的信息时代,数据已经成为了企业运营和决策中不可或缺的一部分.然而,要想获取大量的数据,需要付出巨大的成本和精力.免费采集器应运而生,它能够帮助企业快速.高效地获取所需的数据.本文将从以下八个方面 ...

  6. 万能关键词采集器的强大功能解析

    万能关键词采集器是当前市场上最强大的工具之一,它能够帮助你轻松找到适合你的业务的热门关键词,从而提升你的网站流量和销售量.无论你是个人博主.小型企业还是大型公司,都可以从这个神奇的工具中获益. 那么, ...

  7. java 生成 tar.gz_一文教您如何通过 Java 压缩文件,打包一个 tar.gz Filebeat 采集器包...

    一.背景 最近,小哈主要在负责日志中台的开发工作, 等等,啥是日志中台? 俺只知道中台概念,这段时间的确很火,但是日志中台又是用来干啥的? 这里小哈尽量地通俗的说下日志中台的职责,再说日志中台之前,我 ...

  8. 火车头如何才能设置发布的时候,如果是有html代码就直接的转换掉,互联网上笑话抽取及排重---火车头采集器的使用和MD5算法的应用...

    10011311341 吕涛.10011311356 李红 目的:通过熟悉使用火车头采集器,在网络上采取3万条笑话并进行排重,以此来熟悉web文本挖掘的一些知识. 过程:本次学习,主要分成两个部分.第 ...

  9. 阿里千万实例可观测采集器-iLogtail正式开源

    简介:11月23日,阿里正式开源可观测数据采集器iLogtail.作为阿里内部可观测数据采集的基础设施,iLogtail承载了阿里巴巴集团.蚂蚁的日志.监控.Trace.事件等多种可观测数据的采集工作 ...

最新文章

  1. 怎么用vc采集ni卡数据_智能水表读数怎么看?家用智能水表怎么安装?
  2. 【MySQL】Java中的 JDBC 编程
  3. xampp python linux,Ubuntu的XAMPP着运行python脚本
  4. 版式文件 流式文件_银河麒麟操作系统V10全面适配各类流式版式软件
  5. windows下使用net-snmp实现agent扩展(二)
  6. 专业软件测试面试题汇总
  7. 电脑计算机无法找到脚本文件夹,win10系统开机出现无法找到脚本文件的设置办法...
  8. goupby 两个值 结果变了_一道问题引出的python中可变数据类型与不可变数据类型...
  9. mysql数据库详解(续一)
  10. 转--linux开启FrameBuffer
  11. ios md5 原理_iOS实现MD5加密
  12. 全民一起玩Python 之 基础篇视频教程
  13. 科技爱好者周刊(第 209 期):程序员是怎样的人
  14. unity3D埃及探险游戏源码,支持安卓+IOS双端 unity2019 C#语言开发
  15. HTML无序列表四大名著
  16. 如何批量OCR识别各类票据关键信息,导出为结构化格式数据
  17. 不用mac环境,如何使用Visual Studio在Windows中开发iOS应用
  18. launcher切页动画
  19. CSDN网站中的版权投诉的标准
  20. 范德堡大学计算机专业研究生,范德堡大学计算机科学研究生语言及申请要求-费用-课程设置...

热门文章

  1. HTTP之get post
  2. 杭电oj首字母变大写
  3. Linux 软件看门狗 watchdog 喂狗
  4. C 标准库 - string.h之strstr使用
  5. php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
  6. 优秀的云存储解决方案Dropbox,现在注册就有2G
  7. Java 中的几种线程池,你之前用对了吗,互联网 面试官 如何面试
  8. python time.sleep()-睡眠线程还是进程?
  9. 如何安装Vscode软件及设置成中文界面?
  10. (转)SpringMVC学习(二)——SpringMVC架构及组件