如何 用php抓取google关键词排名

2020-04-27 科技 98阅读
1.说下思路,利用PHP的curl函数储存cookie,google搜索页面是无法用file_get_connents打开的,必须要完全模拟浏览器才行,百度就不同了,直接用file_get_conntens抓取页面,然后用正则处理下就行了。
2.[code]header("Content-Type:text/html;charset=utf-8");
functionggsearch($url_s,$keyword,$page=1){
$enKeyword=urlencode($keyword);
$rsState=false;
$page_num=($page-1)*10;
if($page$interface="eth0:".rand(1,4);//避免GG封IP
$cookie_file=dirname(__FILE__)."/temp/google.txt";//存储cookie值
$url="http://www.google.com/search?q=$enKeyword&hl=en&prmd=imvns&ei=JPnJTvLFI8HlggeXwbRl&start=$page_num&sa=N";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
//curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);//获取浏览器类型
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0(Windows;U;WindowsNT6.1;en-US;rv:1.9.1.2)Gecko/20090729Firefox/3.5.2GTB5");
curl_setopt($ch,CURLOPT_INTERFACE,"$interface");//指定访问IP地址
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);
$contents=curl_exec($ch);
curl_close($ch);
$match="!(.*)<&>\s+<&>!";
preg_match_all("$match","$contents",$line);
while(list($k,$v)=each($line[0])){
preg_match_all("!]+>(.*?)<&>!",$v,$title);
$num=count($title[1]);
for($i=0;$iif(strstr($title[0][$i],$url_s)){
$rsState=true;
$j=$i+1;
$sum=$j+(($page)*10-10);
//echo$contents;
echo"关键字".$keyword."
"."排名:".''.$sum.'<&>'."####"."第".''.$page.'<&>'."页"."第".''.$j.'<&>'."名".$title[0][$i]."
";
echo""."点击搜索结果"."<&>"."
";
echo"
";
break;
}
}
}
unset($contents);
if($rsState===false){
ggsearch($url_s,$keyword,++$page);//找不到搜索页面的继续往下搜索
}
}else{
echo'关键字'.$keyword.'10页之内没有该网站排名'.'
';
echo"
";
}
}
if(!empty($_POST['submit'])){
$time=explode('',microtime());
$start=$time[0]+$time[1];
$more_key=trim($_POST['textarea']);
$url_s=trim($_POST['url']);
if(!empty($more_key)&&!empty($url_s)){
/*判断输入字符的规律*/
if(strstr($more_key,"\n")){
$exkey=explode("\n",$more_key);
}
if(strstr($more_key,"|")){
$exkey=explode("|",$more_key);
}
if(!strstr($more_key,"\n")&&!strstr($more_key,"|")){
$exkey=array($more_key);
}
/*判断是否有www或者http://之类的东西*/
if(count(explode('.',$url_s))$url=ltrim($url_s,'
http://www');
$url='www.'.$url_s;
}
foreach($exkeyas$keyword){
//$keyword;
ggsearch($url_s,$keyword);
}
$endtime=explode('',microtime());
$end=$endtime[0]+$endtime[1];
echo'
';
echo'程序运行时间:';
echo$end-$start;
//die();
}
}
?>
-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
http://www.w3.org/1999/xhtml">

抓取排名<&><br><&><br><br><formaction><br><span>关键字:<&><textareaname><br>格式例如:keyword1|keyword2|keyword3<br>或者:keyword1<br>keyword2<br>keyword3<br><&><br><span>url地址:<&><inputtype><br><inputtype><br><&><br><&></&></&></inputtype></inputtype></&></span></&></textareaname></&></span></formaction></&></&>
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com