huhahapz 发表于 2017-3-4 10:16:26

php采集(php小偷)程序设计教程

  目录
  什么是php采集程序?      
为什么要采集?   
采集些什么?   
如何采集?   
采集范例程序   
一些常用的函数
  对一个目标网站的全面采集
  什么是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 $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 <br />//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/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 <br />/* 此程序是从新浪网的天气网页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/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,"");
$sub_end=strpos($b,"");         
$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.="
";         
}         
}         
echo $e;         
ob_end_flush();         
?> 程序运行情况:      
测试      
[ 本帖最后由 天涯风云 于 2007-6-3 12:26 编辑 ]   天涯风云 发布于2007-06-03 12:29:08采集范例程序      
采集范例程序      
采集范例程序2:取得tom的天气  CODE:
           
天气预报-天气查询-中国美女网
<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">

         



http://ifeisu.iteye.com/blog/templates/default/images/top1.jpg         




href="http://www.86mm.com.cn/" target=_blank>棣
页: [1]
查看完整版本: php采集(php小偷)程序设计教程