采集百度的搜索结果,可以用到站内搜索,节省资源
2012-1-30 17:37 Monday  

分类: PHP 评论(54) 浏览(76742)

<?php
/**
* 采集百度的搜索结果,可以用到站内搜索,节省资源
* 分页部分就没有处理了,需在函数外处理
*
* @author Aboc QQ:9986584
*/

function searchBaidu($keyword,$page=0){
  
   if(empty($keyword))return false;
   $keyword = urlencode($keyword);
   if($page>76)$page=76;
   $content = file_get_contents("http://www.baidu.com/s?wd=".$keyword.'&pn='.$page);
   //echo $content;
  
   //如果找不到
   if(strpos($content,'抱歉,没有找到与“<font color="#C60A00">')!==false)return false;
  
   preg_match('/百度一下,找到相关网页(.*)篇,用时/',$content,$a);
   //搜索结果数
   $num = str_replace(array('约',','),'',$a[1]);
   $page = ceil($num)/10;
   //echo $num;

   //采集到的标题
   preg_match_all('/(\<font size=\"3\"\>(.+?)\<\/font\>\<\/a\>\<br\>)/',$content,$b);
   //print_r($b[2]);
   $title = $b[2];

   //采网址
   preg_match_all('/(\<a onmousedown=\"(.+?)\" href=\"(.+?)\" target=\"_blank\"\>)/',$content,$c);
   //print_r($c);
   $href = $c[3];

   //采内容
   preg_match_all('/(\<font size=-1\>(.+?)\<br\>)/',$content,$d);
   //print_r($d);
   $detail = $d[2];
  
   $end = array();
   $end[0] = array('num'=>ceil($num),'page'=>$page);
   foreach( $title as $key=>$row ){
    $end[1][$key]['title']=$title[$key];
    $end[1][$key]['href']=$href[$key];
    $end[1][$key]['detail']=$detail[$key];
   }
   return $end;  
}

/**
* 使用
*/
   if( $search = searchBaidu('www.yiwuku.com') )
print_r($search);
else
echo '没有找到';

+1 21

留下你的看法: