php采集(php小偷)程序设计教程
2009-03-12 22:47
836 查看
目录
什么是[b]php采集程序?
为什么要采集?[/b]
采集些什么?
如何采集?
采集范例程序
一些常用的函数
对一个目标网站的全面采集
什么是php采集程序?
php采集程序,也叫php小偷,主要是用于自动搜集网络上web页里特定内容,用php语言写的web程序,运行于支持php的平台上。谈到“自动搜集”,你可能联想到百度goole,联想到搜索引擎所做的事情。php采集程序,正是做类似的工作。
为什么要采集?
互联网正以飞快的速度在发展,web数据每天以几何级数据量递增,面对这庞大的数据,作为一个网站管理员的你,该如何搜集自己所需要的信息呢?特别对某个或某几个同类网站,你需要它们的大量信息,来充实你的网站内容,难道就只能复制粘贴的过日子吗?一个网站管理员,你真的就得花大量时间去搞原创内容,而与整个互联网信息量的发展速度脱节吗?这些问题的解决方法只有一个:采集。如果有那么一个程序,你帮你的网站自动或半自动的采集你所需要的特定内容,即时更新你网站的信息,是否是你梦寐以求的呢?这就是采集程序出现的原因所在。
采集些什么?
这要看你做的什么类型的网站了。如果你做图片站,就采集图片;做音乐站,就采集mp3,做新闻站,就采集新闻等等。一切根据你网站的内容架构需要而定。确定你要采集的东西,才好写出相应的采集程序。
[本帖最后由 天涯风云 于 2007-6-3 12:41 编辑]
论坛模式 推荐 收藏 分享给好友 推荐到圈子 管理
TAG:
天涯风云 发布于2007-06-03 11:54:08 如何采集?
如何采集?
通常采集程序,都是有的放矢的。也就是需要有目标网站,搜集一些你需要的采集内容的网站,分别对其html代码进行分析,找出规律性的东西,依据你要采集的特定内容,写出php代码。采集到你要的东西以后,你可以选择自己需要的存放方式。比如直接生成html页面,或是放进数据库,作进一步处理或是存放成特定的形式,以备后用。
针对目标网站,我们可以采用以下方式:
1.使用file()函数,获取目标页面文件流,转换成字符串,作进一步处理.
一个范例函数:
CODE:
CODE:
范例程序:
CODE:
范例程序:
CODE:
采集范例程序1
获取sina网上的某个城市的天气信息
//sinatianqi.php
CODE:
测试
[ 本帖最后由 天涯风云 于 2007-6-3 12:26 编辑 ]天涯风云 发布于2007-06-03 12:29:08 采集范例程序
采集范例程序
采集范例程序2:取得tom的天气
CODE:
[ 本帖最后由 天涯风云 于 2007-6-5 19:42 编辑 ]天涯风云 发布于2007-06-03 12:37:12 一些常用的函数
CODE:
对一个目标网站的全面采集,包括以下几个步聚:
1。分析首页或分类页的html源码
2。依据分析,写出正则表达式,采集首页或分类页面里的链接
3。将链接作为目标页面,进行二次采集。
4.将采集的内容作进一步处理。
[ 本帖最后由 天涯风云 于 2007-6-3 13:27 编辑 ]天涯风云 发布于2007-06-03 13:28:42 范例:对86mm.com.cn网站的全面采集
范例:对86mm.com.cn网站的全面采集
一,对首页源码分析,找出链接规律
该网站首页源码查看:http://86mm.com.cn/files.php?id=http://86mm.com.cn
分析有效链接:
CODE:
[ 本帖最后由 天涯风云 于 2007-6-3 13:39 编辑 ]天涯风云 发布于2007-06-03 13:37:18 范例:对86mm.com.cn网站的全面采集
二,写正则表达式,找出首页里的所有链接
关键字符串:|<a href="html/xingaijiankang/8104.html" target="_blank"|
正则匹配规则:
$re="|<a href=/"(html///w+///d{1,5}/.html)/" target=/"_blank/"|U";
找所有链接,并显示结果:
CODE:
3.JPG
天涯风云 发布于2007-06-03 14:19:09 范例:对86mm.com.cn网站的全面采集
三,对内容页面html源码分析,采集标题和内容(本范例主要采集页面标题和内容)
查看源码:http://86mm.com.cn/files.php?id= ... einvzipai/8061.html
分析:
CODE:
主要内容部分集中在
CODE:
这样标题我内容就全获取了。。
具体实现代码:
CODE:
[ 本帖最后由 天涯风云 于 2007-6-3 14:29 编辑 ]
4.GIF
天涯风云 发布于2007-06-03 14:58:50 范例:对86mm.com.cn网站的全面采集
四,批量获取首页里所有链接的标题和内容,并以php文件的形式保存。
下面,我们要用程序依次打开86mm.com.cn首页里所有链接,并取得相应的标题和内容,存为php文件,当然你可以生成其它格式的文件或放进数据库里,这以个人需要而定。
代码如下:
CODE:
什么是[b]php采集程序?
为什么要采集?[/b]
采集些什么?
如何采集?
采集范例程序
一些常用的函数
对一个目标网站的全面采集
什么是php采集程序?
php采集程序,也叫php小偷,主要是用于自动搜集网络上web页里特定内容,用php语言写的web程序,运行于支持php的平台上。谈到“自动搜集”,你可能联想到百度goole,联想到搜索引擎所做的事情。php采集程序,正是做类似的工作。
为什么要采集?
互联网正以飞快的速度在发展,web数据每天以几何级数据量递增,面对这庞大的数据,作为一个网站管理员的你,该如何搜集自己所需要的信息呢?特别对某个或某几个同类网站,你需要它们的大量信息,来充实你的网站内容,难道就只能复制粘贴的过日子吗?一个网站管理员,你真的就得花大量时间去搞原创内容,而与整个互联网信息量的发展速度脱节吗?这些问题的解决方法只有一个:采集。如果有那么一个程序,你帮你的网站自动或半自动的采集你所需要的特定内容,即时更新你网站的信息,是否是你梦寐以求的呢?这就是采集程序出现的原因所在。
采集些什么?
这要看你做的什么类型的网站了。如果你做图片站,就采集图片;做音乐站,就采集mp3,做新闻站,就采集新闻等等。一切根据你网站的内容架构需要而定。确定你要采集的东西,才好写出相应的采集程序。
[本帖最后由 天涯风云 于 2007-6-3 12:41 编辑]
论坛模式 推荐 收藏 分享给好友 推荐到圈子 管理
TAG:
天涯风云 发布于2007-06-03 11:54:08 如何采集?
如何采集?
通常采集程序,都是有的放矢的。也就是需要有目标网站,搜集一些你需要的采集内容的网站,分别对其html代码进行分析,找出规律性的东西,依据你要采集的特定内容,写出php代码。采集到你要的东西以后,你可以选择自己需要的存放方式。比如直接生成html页面,或是放进数据库,作进一步处理或是存放成特定的形式,以备后用。
针对目标网站,我们可以采用以下方式:
1.使用file()函数,获取目标页面文件流,转换成字符串,作进一步处理.
一个范例函数:
CODE:
//获取目标页面文件流并转换成字符串形式 function openfile($url) { if(file($url)){ $str = file($url); $count = count($str); for ($i=0;$i<$count;$i++){ $file .= $str[$i]; } return $file; } else { die("文件打开失败!"); } } 用法举例: $getstr=openfile("http://86enjoy.com"); //getsrt是一个字符串,你可对它作进一步处理。2.使用file_get_contents()函数,该函数可以直接将获取的web页面内容转换成字符串
CODE:
$getstr=file_get_contents("http://86enjoy.com"); //getsrt就是一个字符串,你可对它作进一步处理。3.使用Microsoft.XMLHTTP组件方式。不过该组件需要windows平台支持,它是windows的一个组件,php程序以com形式调用它。
范例程序:
CODE:
<?php //Microsoft.XMLHTTP组件使用范例程序get.php //作者:天涯风云 $url=$_GET['id']; $xmlhttp = new COM("Microsoft.XMLHTTP") or die("无法创建Microsoft.XMLHTTP组件!"); $xmlhttp->open("GET",$url,False, "", ""); $xmlhttp->setRequestHeader("content-Type","text/html"); $xmlhttp->send(); $body=$xmlhttp->responseText; echo $body; ?> 用法:get.php?id="目标页面"4.使用fsockopen()函数,获取文件流
范例程序:
CODE:
function request_url($url,$method='POST') { $url = parse_url($url); //解析url地址,取得host,path,port,query等 if (!$url) return "couldn't parse url"; if (!isset($url['port'])) { $url['port'] = ""; } if (!isset($url['query'])) { $url['query'] = ""; } //连接服务器 $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80); if (!$fp) return "不能连接".$url['host']."服务器"; //发送请求 fputs($fp, sprintf("$method %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['query'])); fputs($fp, "Host: $url[host]/n"); fputs($fp, "Content-type: application/x-www-form-urlencoded/n"); fputs($fp, "Connection: close/n/n"); //获得请求后返回的内容 $line = fgets($fp,1024); if (!eregi("^HTTP/1/.. 200", $line)) return; $results = ""; while(!feof($fp)) { $line = fgets($fp,1024); $results .= $line; } fclose($fp); return $results; } 函数用法: $getstr=request_url("目标页面"); //getstr是一个字符串,你可对它作进一步处理。[ 本帖最后由 天涯风云 于 2007-6-3 12:14 编辑 ]天涯风云 发布于2007-06-03 12:24:33 采集范例程序
采集范例程序1
获取sina网上的某个城市的天气信息
//sinatianqi.php
CODE:
<?php /* 此程序是从新浪网的天气网页http://php.weather.sina.com.cn/search.php?city=某个城市名,取得天气信息*/ ob_start(); //启动输出缓冲 function request_url($url,$method='POST') { $url = parse_url($url); //解析url地址,取得host,path,port,query等 if (!$url) return "couldn't parse url"; if (!isset($url['port'])) { $url['port'] = ""; } if (!isset($url['query'])) { $url['query'] = ""; } //连接服务器 $fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80); if (!$fp) return "不能连接".$url['host']."服务器"; //发送请求 fputs($fp, sprintf("$method %s%s%s HTTP/1.0/n", $url['path'], $url['query'] ? "?" : "", $url['query'])); fputs($fp, "Host: $url[host]/n"); fputs($fp, "Content-type: application/x-www-form-urlencoded/n"); fputs($fp, "Connection: close/n/n"); //获得请求后返回的内容 $line = fgets($fp,1024); if (!eregi("^HTTP/1/.. 200", $line)) return; $results = ""; while(!feof($fp)) { $line = fgets($fp,1024); $results .= $line; } fclose($fp); return $results; } //获得从其它网页传送过来的url(带查询字串) if (!$_REQUEST['url']) { echo "请添加一个url"; exit; }else{ $url=$_REQUEST['url']; } $content=request_url($url); //取得请求后的网页内容 $start=strpos($content,"<!-- 天气状况 begin -->");//取得天气预报的截取段 $end=strpos($content,"<!-- 天气状况 end -->"); $len=$end-$start; $b=substr($content,$start,$len); //截取得指定内容 //从上面的截取段中取得城市今日天气预报的截取段 $sub_start=strpos($b,"<div class=/"City_Data/">"); $sub_end=strpos($b,"<div class=/"Weather_SM/">"); $len2=$sub_end-$sub_start; $c=substr($b,$sub_start,$len2); $d=split("/n",$c); //去掉换行符 //print_r($d); $e=""; foreach ($d as $key=>$value){ $value=strip_tags($value); //去掉html标记 $e.=$value; if ($key==2) { $e.="<br>"; } } echo $e; ob_end_flush(); ?>程序运行情况:
测试
[ 本帖最后由 天涯风云 于 2007-6-3 12:26 编辑 ]天涯风云 发布于2007-06-03 12:29:08 采集范例程序
采集范例程序
采集范例程序2:取得tom的天气
CODE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>天气预报-天气查询-中国美女网</TITLE> <META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK href="images/home.css" rel=stylesheet> <META content="MSHTML 6.00.3790.2759" name=GENERATOR></HEAD> <BODY bgColor=#ffffff leftMargin=0 topMargin=0 marginheight="0" marginwidth="0"> <center><div> <TABLE cellSpacing=0 cellPadding=0 width=774 align=center border=0> <TBODY> <TR> <TD><IMG height=100 src="templates/default/images/top1.jpg" width=770></TD> </TR></TBODY></TABLE> <TABLE height=28 cellSpacing=0 cellPadding=0 width=774 align=center border=0> <TBODY> <TR> <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A href="http://www.86mm.com.cn/" target=_blank>首页</A></TD> <TD vAlign=center align=middle width=2 background=templates/default/images/tt_r4_c1.jpg><IMG height=22 src="templates/default/images/tt_r5_c8.jpg" width=1></TD> <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A href="http://www.huazhongpc.com/html/zouguangtoupai/" target=_blank>走光偷拍</A></TD> <TD vAlign=center align=middle width=2 background=templates/default/images/tt_r4_c1.jpg><IMG height=22 src="templates/default/images/tt_r5_c8.jpg" width=1></TD> <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A href="http://www.huazhongpc.com/html/jiqingyouhuo/" target=_blank>激情诱惑</A></TD> <TD vAlign=center align=middle width=2 background=templates/default/images/tt_r4_c1.jpg><IMG height=22 src="templates/default/images/tt_r5_c8.jpg" width=1></TD> <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A href="http://www.huazhongpc.com/html/qingchunnvhai/" target=_blank>清纯女孩</A></TD> <TD vAlign=center align=middle width=2 background=templates/default/images/tt_r4_c1.jpg><IMG height=22 src="templates/default/images/tt_r5_c8.jpg" width=1></TD> <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A href="http://www.huazhongpc.com/html/meinvzipai/" target=_blank>美女自拍</A></TD> <TD vAlign=center align=middle width=2 background=templates/default/images/tt_r4_c1.jpg><IMG height=22 src="templates/default/images/tt_r5_c8.jpg" width=1></TD> <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A href="http://www.huazhongpc.com/html/mingxingxiezhen/" target=_blank>明星写真</A></TD> <TD vAlign=center align=middle width=2 background=templates/default/images/tt_r4_c1.jpg><IMG height=22 src="templates/default/images/tt_r5_c8.jpg" width=1></TD> <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A href="http://www.huazhongpc.com/html/xingaijiankang/" target=_blank>性爱健康 </A></TD> <TD vAlign=center align=middle width=2 background=templates/default/images/tt_r4_c1.jpg><IMG height=22 src="templates/default/images/tt_r5_c8.jpg" width=1></TD> <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A href="http://www.huazhongpc.com/html/mianfeidianying/" target=_blank>免费电影</A></TD> <TD vAlign=center align=middle width=2 background=templates/default/images/tt_r4_c1.jpg><IMG height=22 src="templates/default/images/tt_r5_c8.jpg" width=1></TD> <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A href="http://www.huazhongpc.com/html/gaoxiaotupian/" target=_blank>搞笑图片</A></TD> <TD vAlign=center align=middle width=2 background=templates/default/images/tt_r4_c1.jpg><IMG height=22 src="templates/default/images/tt_r5_c8.jpg" width=1></TD> <TD vAlign=center align=middle background=templates/default/images/tt_r4_c1.jpg><A href="http://www.huazhongpc.com/tianqi.php" target=_blank>天气预报</A></TD> </TR></TBODY></TABLE> <TABLE style="MARGIN-TOP: 2px" cellSpacing=0 cellPadding=0 width=774 background=images/t2_05.gif border=0> <TBODY> <TR><td> <SCRIPT language=JavaScript> <!--- today = new Date(); var hours = today.getHours(); var minutes = today.getMinutes(); var seconds = today.getSeconds(); var timeValue = "<FONT COLOR=#000000>" + (hours); timeValue += ((minutes < 10) ? "<FONT COLOR=#000000>:</FONT></BLINK>0" : "<FONT COLOR=#000000>:</FONT></BLINK>") + minutes+"</FONT></FONT>"; function initArray(){ this.length=initArray.arguments.length for(var i=0;i<this.length;i++) this[i+1]=initArray.arguments[i] } var d=new initArray("<font color=#0000ff>星期天","<font color=#000000>星期一","<font color=#000000>星期二","<font color=#000000>星期三","<font color=#000000>星期四","<font color=#000000>星期五","<font color=#FEFF80>星期六"); document.write("<font color=#000000>",today.getYear(),"年","",today.getMonth()+1,"月","",today.getDate(),"日 </FONT>",d[today.getDay()+1]," "); //--> </SCRIPT> <font color=#0000ff>(友情提醒:按"Ctrl键+F"查找你所在城市的天气情况)</font><form name="form1" action="http://weather.tq121.com.cn/detail.php"> <input name="city" type="text" size="20"> <input type="submit" value="搜索"> </form> </TD></TR> </TBODY></TABLE> <TABLE style="MARGIN-TOP: 2px" cellSpacing=0 cellPadding=0 width=774 background=images/t2_05.gif border=0> <TBODY> <TR> <TD width=20><IMG height=21 src="images/t2_04.gif" width=13></TD> <TD class=c1 width=153>中国天气查询 </TD> <TD width=14><IMG height=21 src="images/t2_06.gif" width=14></TD> <TD align=right background=images/t2_07.gif> 数据来源:<A href="http://www.tq121.com.cn/" target=_blank>中央气象台</A></TD> <TD width=7><IMG height=21 src="images/t2_08.gif" width=7></TD></TR></TBODY></TABLE> <DIV id=guonei_h24 name="guonei_h24"> <TABLE cellSpacing=1 cellPadding=1 width=774 bgColor=#ababab border=0> <TBODY> <?php $str = file("http://tq.tom.com/china/index.html"); $count = count($str); for ($i=0;$i<$count;$i++){ $file .= $str[$i]; } $tomtq = explode("<table width=/"774/" border=/"0/" cellspacing=/"1/" cellpadding=/"1/" bgcolor=/"#ABABAB/">",$file); $tomtq = explode("</table>",$tomtq[1]); $tomtq= $tomtq[0]; echo $tomtq; ?> </TBODY></TABLE> <TABLE cellSpacing=1 cellPadding=0 width=774 align=center border=0> <TBODY> <TR> <TD bgColor=#bbf1ff> <TABLE cellSpacing=5 cellPadding=0 width=774 border=0> <TBODY> <TR> <TD align=middle><A href="http://www.86mm.com.cn/" target=_blank>联系我们</A> <FONT color=#000099>-</FONT> <A onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.86mm.com.cn');return false;" href="http://www.86mm.com.cn/#">设置首页</A> <FONT color=#000099>-</FONT> <A href="http://sms.25vod.com/public/fullscreen/golink.php?smsid=107" target=_blank>广告服务</A> <FONT color=#000099>-</FONT> <FONT color=#ff0000><A href="http://sms.25vod.com/public/fullscreen/golink.php?smsid=107" target=_blank>友情链接</A></FONT></TD> </TR> <TR> <TD align=middle>本站内容来自于互联网搜索和网友改编、上传,本站提供的视频、音乐片断仅供网友测试使用,<BR>如发现相关内容侵犯了您的权益,请及时联系我们,本站将会及时予以删除<BR> 联系QQ:231734624 联系E-mail:wangsua@163.com<BR> Copyright ? 2005-2008 86mm.com.cn Inc. All rights reserved. 华中美女网 版权所有 <BR><script language="javascript" type="text/javascript" src="http://js.users.51.la/882050.js"></script> <noscript><a href="http://www.51.la/?882050" target="_blank"><img alt="我要啦免费统计" src="http://img.users.51.la/882050.asp" style="border:none" /></a></noscript><a href=http://www.miibeian.gov.cn/>鄂ICP备06012810号</a><BR> </TD> </TR></TBODY></TABLE></TD></TR></TBODY></TABLE> </DIV> </CENTER></BODY></HTML>示范页面:http://86mm.com.cn/tianqi.php
[ 本帖最后由 天涯风云 于 2007-6-5 19:42 编辑 ]天涯风云 发布于2007-06-03 12:37:12 一些常用的函数
CODE:
// ####################### 获取文件流并转换成字符串 ####################### function openfile($url) { if(file($url)){ $str = file($url); $count = count($str); for ($i=0;$i<$count;$i++){ $file .= $str[$i]; } return $file; } else { die("文件打开失败!"); } } // ####################### 切分字符串 ####################### function cut($start,$end,$file){ $content=explode($start,$file); $content=explode($end,$content[1]); return $content[0]; } // ####################### 清除垃圾代码 ####################### function del($start,$end,$content){ $del=cut($start,$end,$content); $content=str_replace($del,"",$content); $content=str_replace($start.$end,"",$content); return $content; } // ####################### 分析域名 ####################### function getname($url) { $referer = preg_replace("/https?:////([^//]+).*/i", "//1", $url); $referer = str_replace("www.", "", $referer); return $referer; } // ####################### 清除HTML代码table ####################### function clstable($content) { $clscontent= preg_replace("/<table[^>]*?>.*?<//table>/si", "", $content); return $clscontent; } // ####################### 清除HTML代码script ####################### function clsscript($content) { $clscontent= preg_replace("/<script[^>]*?>.*?<//script>/si", "", $content); return $clscontent; } // ####################### 清除HTML代码div ####################### function clsdiv($content) { $clscontent= preg_replace("/<div[^>]*?>.*?<//div>/si", "", $content); return $clscontent; } // ####################### 清除HTML代码iframe ####################### function clsifr($content) { $clscontent= preg_replace("/<IFRAME[^>]*?>.*?<//IFRAME>/si", "", $content); return $clscontent; } // ####################### 清除HTML代码tr,td ####################### function clstrtd($content) { $clscontent= preg_replace("/<td[^>]*?>.*?<//td>/si", "", $content); $clscontent= preg_replace("/<tr[^>]*?>.*?<//tr>/si", "", $clscontent); $clscontent= preg_replace("/<tr[^>]*?>/si","",$clscontent); $clscontent= preg_replace("/<td[^>]*?>/si","",$clscontent); $clscontent= preg_replace("/<//tr>/si","",$clscontent); $clscontent= preg_replace("/<//td>/si","",$clscontent); return $clscontent; } // ####################### 清除HTML代码超链接 ####################### function clsa($content) { $clscontent= preg_replace("/<a[^>]*?>.*?<//a>/si", "", $content); return $clscontent; } // ####################### 彻底清除所有HTML代码####################### function clearhtml($content) { $search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript "'<[///!]*?[^<>]*?>'si", // 去掉 HTML 标记 "'([/r/n])[/s]+'", // 去掉空白字符 "'&(quot|#34);'i", // 替换 HTML 实体 "'&(amp|#38);'i", "'&(lt|#60);'i", "'&(gt|#62);'i", "'&(nbsp|#160);'i", "'&(iexcl|#161);'i", "'&(cent|#162);'i", "'&(pound|#163);'i", "'&(copy|#169);'i", "'(/d+);'e"); // 作为 PHP 代码运行 $replace = array ("", "", "//1", "/"", "&", "<", ">", " ", chr(161), chr(162), chr(163), chr(169), "chr(//1)"); $text = preg_replace ($search, $replace, $content); return $text; } // ####################### 写入缓存文件 ####################### function writetocache($cachedir,$cachename, $cachedata = '') { $cachedir = './'.$cachedir.'/'; $cachefile = $cachedir.$cachename.'.php'; if(!is_dir($cachedir)) { @mkdir($cachedir, 0777); } if(!is_dir($cachedir)) { @mkdir($cachedir, 0777); } if(@$fp = fopen($cachefile, 'wb')) { @fwrite($fp, $cachedata); @fclose($fp); @chmod($cachefile, 0777); } else { echo 'Can not write to cache files, please check directory ./cache/ .'; exit; } } // ####################### 获取文件里的html链接 ####################### function geturl($re,$ufile,$rep1,$rep2){ preg_match_all ($re, $ufile, $out, PREG_PATTERN_ORDER); $result=count($out[1]); $i=0; while($i<$result) { $outs[$i]=str_replace($rep1,$rep2,$out[1][$i]); $i++; } //合并相同的链接并重新索引... $reout=array(); $reout=resetar($outs); return $reout; }天涯风云 发布于2007-06-03 13:01:53 对一个目标网站的全面采集
对一个目标网站的全面采集,包括以下几个步聚:
1。分析首页或分类页的html源码
2。依据分析,写出正则表达式,采集首页或分类页面里的链接
3。将链接作为目标页面,进行二次采集。
4.将采集的内容作进一步处理。
[ 本帖最后由 天涯风云 于 2007-6-3 13:27 编辑 ]天涯风云 发布于2007-06-03 13:28:42 范例:对86mm.com.cn网站的全面采集
范例:对86mm.com.cn网站的全面采集
一,对首页源码分析,找出链接规律
该网站首页源码查看:http://86mm.com.cn/files.php?id=http://86mm.com.cn
分析有效链接:
CODE:
<TR><TD><a href="html/xingaijiankang/8104.html" target="_blank" title="男性生殖保健"> 男性生殖保健</a></TD></TR>现在我们就要找出形如"html/xingaijiankang/8104.html"类似字符串的所有链接。
[ 本帖最后由 天涯风云 于 2007-6-3 13:39 编辑 ]天涯风云 发布于2007-06-03 13:37:18 范例:对86mm.com.cn网站的全面采集
二,写正则表达式,找出首页里的所有链接
关键字符串:|<a href="html/xingaijiankang/8104.html" target="_blank"|
正则匹配规则:
$re="|<a href=/"(html///w+///d{1,5}/.html)/" target=/"_blank/"|U";
找所有链接,并显示结果:
CODE:
<?php // ####################### 获取文件里的html链接 ####################### function geturl($re,$ufile,$rep1,$rep2){ preg_match_all ($re, $ufile, $out, PREG_PATTERN_ORDER); $result=count($out[1]); $i=0; while($i<$result) { $outs[$i]=str_replace($rep1,$rep2,$out[1][$i]); $i++; } //合并相同的链接并重新索引... $reout=array(); $reout=resetar($outs); return $reout; } set_time_limit(0); $url=$_GET['http://86mm.com.cn']; $ufile=file_get_contents($url); $re="|<a href=/"(html///w+///d{1,5}/.html)/" target=/"_blank/"|U"; $rep1=""; $rep2=""; $urls=geturl($re,$ufile,$rep1,$rep2); $result=count($urls); echo "共找到".$result."个链接<br>"; $i=0; while($i<$result) { $outurl[$i]="http://86mm.com.cn/".$urls[$i]; echo $outurl[$i]."<br>"; $i++; } ?>[ 本帖最后由 天涯风云 于 2007-6-3 13:49 编辑 ]
3.JPG
天涯风云 发布于2007-06-03 14:19:09 范例:对86mm.com.cn网站的全面采集
三,对内容页面html源码分析,采集标题和内容(本范例主要采集页面标题和内容)
查看源码:http://86mm.com.cn/files.php?id= ... einvzipai/8061.html
分析:
CODE:
<TITLE>世界上最搞笑的屁股⌒-mianfeidianying,中国美女网,性爱,免费,短片,视频,恶搞,搞笑图片</TITLE>这部分可以用cut("<TITLE>","</TITLE>",$file)直接获取,然后把后面多余的尾巴换掉。
主要内容部分集中在
CODE:
<td height="15" valign="top">..............<!--流量交换-->这一区间内,我们可以再次cut()一下,取得内容。
这样标题我内容就全获取了。。
具体实现代码:
CODE:
<?php // ####################### 切分文件流 ####################### function cut($start,$end,$file){ $content=explode($start,$file); $content=explode($end,$content[1]); return $content[0]; } // ####################### 清除垃圾代码 ####################### function del($start,$end,$content){ $del=cut($start,$end,$content); $content=str_replace($del,"",$content); $content=str_replace($start.$end,"",$content); return $content; } set_time_limit(0); $url=$_GET['id']; $files=file_get_contents($url); $title=cut("<TITLE>","</TITLE>",$files); //清除标题后面的多余字符串 $title=str_replace("-mianfeidianying,中国美女网,性爱,免费,短片,视频,恶搞,搞笑图片","",$title); $content=cut("<td height=/"15/" valign=/"top/">","<!--流量交换-->" ,$files); //清除内容里的一句广告词 $content=del("<font color=red>","</font>",$content); echo $title."<br>"; echo $content; ?>这样,我们就可以获取一个页面内的标题和内容了。。
[ 本帖最后由 天涯风云 于 2007-6-3 14:29 编辑 ]
4.GIF
天涯风云 发布于2007-06-03 14:58:50 范例:对86mm.com.cn网站的全面采集
四,批量获取首页里所有链接的标题和内容,并以php文件的形式保存。
下面,我们要用程序依次打开86mm.com.cn首页里所有链接,并取得相应的标题和内容,存为php文件,当然你可以生成其它格式的文件或放进数据库里,这以个人需要而定。
代码如下:
CODE:
<?php // ####################### 获取文件里的html链接 ####################### function geturl($re,$ufile,$rep1,$rep2){ preg_match_all ($re, $ufile, $out, PREG_PATTERN_ORDER); $result=count($out[1]); $i=0; while($i<$result) { $outs[$i]=str_replace($rep1,$rep2,$out[1][$i]); $i++; } //合并相同的链接并重新索引... $reout=array(); $reout=resetar($outs); return $reout; } // ####################### 切分文件流 ####################### function cut($start,$end,$file){ $content=explode($start,$file); $content=explode($end,$content[1]); return $content[0]; } // ####################### 清除垃圾代码 ####################### function del($start,$end,$content){ $del=cut($start,$end,$content); $content=str_replace($del,"",$content); $content=str_replace($start.$end,"",$content); return $content; } // ####################### 清除数组里的重复值并重新索引数组 ####################### function resetar($outs){ $reout=array(); $reouts=array(); $reout=array_unique($outs); foreach($reout as $key=>$value){ array_push($reouts,$value); } return $reouts; } // ####################### 写入缓存文件 ####################### function writetocache($cachedir,$cachename, $cachedata = '') { $cachedir = './'.$cachedir.'/'; $cachefile = $cachedir.$cachename.'.php'; if(!is_dir($cachedir)) { @mkdir($cachedir, 0777); } if(!is_dir($cachedir)) { @mkdir($cachedir, 0777); } if(@$fp = fopen($cachefile, 'wb')) { @fwrite($fp, "<?php/r/n//天涯风云,版权所有/r/n//Created on /r/n/r/n".$cachedata."/r/n/r/n?>"); @fclose($fp); @chmod($cachefile, 0777); } else { echo 'Can not write to cache files, please check directory ./cache/ .'; exit; } } // ####################### 创建缓存文件 ####################### function content_recache($cachedir,$i,$title,$content) { $contents = "/$catecache = array(/r/n"; $contents.="/t'title' => '".$title."',/r/n'content'=> '".$content."'/r/n"; $contents .= ");"; writetocache($cachedir,$i,$contents); echo "./".$cachedir."/".$i.".php文件创建成功!<br>"; } set_time_limit(0); $url='http://86mm.com.cn'; $ufile=file_get_contents($url); $re="|<a href=/"(html///w+///d{1,5}/.html)/" target=/"_blank/"|U"; $rep1=""; $rep2=""; $urls=geturl($re,$ufile,$rep1,$rep2); $result=count($urls); echo "共找到".$result."个链接<br>"; $i=0; while($i<$result) { $outurl[$i]="http://86mm.com.cn/".$urls[$i];//对取得的链接加域名,得到实际地址 echo $outurl[$i]."<br>"; $files[$i]=file_get_contents($outurl[$i]); $title[$i]=cut("<TITLE>","</TITLE>",$files[$i]); $title[$i]=str_replace("-mianfeidianying,中国美女网,性爱,免费,短片,视频,恶搞,搞笑图片","",$title[$i]); $content[$i]=cut("<td height=/"15/" valign=/"top/">","<!--流量交换-->" ,$files[$i]); //清除内容里的一句广告词 $content[i]=del("<font color=red>","</font>",$content[i]); //将取得的标题和内容写入文件 content_recache("86mm",$i,$title[$i],$content[$i]); $i++; } ?>示例中,将取得的标题和内容存为php数组形式的文件,主要为了文件做后期处理,或写入数据库,或生成html文档都可以
相关文章推荐
- php采集(php小偷)程序设计教程
- php采集(php小偷)程序设计教程
- 基于PHP的cURL快速入门教程 (小偷采集程序)
- 基于PHP的cURL快速入门教程 (小偷采集程序)
- 基于PHP的cURL快速入门教程 (小偷采集程序)
- 基于PHP的cURL快速入门教程 (小偷采集程序)
- 基于PHP的cURL快速入门教程 (小偷采集程序)
- php采集小偷程序集合
- PHP小偷程序的设计与实现方法详解
- PHP小偷程序的设计与实现方法详解
- PHP的cURL快速入门 (小偷采集程序)
- 吴文虎_程序设计基础_清华大学视频教程
- 一个图片地址分解程序(用于PHP小偷程序)
- php开发通用采集程序
- php采集文章内容列表链接-php采集网页-php爬虫视频教程3
- 原创:【微信小程序】发送消息模板教程(后台以PHP示例)
- php小偷程序实例代码
- PHP程序61条面向对象分析设计的经验原则
- 支付宝小程序PHP全栈开发--前端样式的设计.acss样式详解
- PHP采集程序原理分析篇