用php抓取google关键词排名

简介:

说下思路,利用PHP的curl函数储存cookie,google搜索页面是无法用file_get_connents打开的,必须要完全模拟浏览器才行,百度就不同了,直接用file_get_conntens抓取页面,然后用正则处理下就行了,这里就不列举百度了。code如下,有问题请联系我

 

 
 
  1. <?php  
  2. header("Content-Type: text/html;charset=utf-8");  
  3.  
  4. function ggsearch($url_s$keyword$page = 1) {  
  5.         $enKeyword = urlencode($keyword);  
  6.  
  7.         $rsState = false;  
  8.  
  9.         $page_num = ($page -1) * 10;  
  10.  
  11.  
  12.         if ($page <= 10) {  
  13.                 $interface = "eth0:" . rand(1, 4); //避免GG封IP  
  14.                 $cookie_file = dirname(__FILE__) . "/temp/google.txt"//存储cookie值  
  15.                 $url = "http://www.google.com/search?q=$enKeyword&hl=en&prmd=imvns&ei=JPnJTvLFI8HlggeXwbRl&start=$page_num&sa=N";  
  16.                 $ch = curl_init();  
  17.  
  18.                 curl_setopt($ch, CURLOPT_URL, $url);  
  19.  
  20.                 //curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);//获取浏览器类型  
  21.                 curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5");  
  22.                 curl_setopt($ch, CURLOPT_INTERFACE, "$interface"); //指定访问IP地址  
  23.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
  24.  
  25.                 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
  26.  
  27.                 curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);  
  28.  
  29.                 $contents = curl_exec($ch);  
  30.  
  31.                 curl_close($ch);  
  32.  
  33.                 $match = "!<div\s*id=\"search\">(.*)</div>\s+<\!--z-->!";  
  34.                 preg_match_all("$match""$contents"$line);  
  35.                 while (list ($k$v) = each($line[0])) {  
  36.                         preg_match_all("!<h3\s+class=\"r\"><a[^>]+>(.*?)</a>!"$v$title);  
  37.                         $num = count($title[1]);  
  38.                         for ($i = 0; $i < $num$i++) {  
  39.                                 if (strstr($title[0][$i], $url_s)) {  
  40.                                         $rsState = true;  
  41.                                         $j = $i +1;  
  42.                                         $sum = $j + (($page) * 10 - 10);  
  43.                                         //echo $contents;  
  44.                                         echo "关键字" . $keyword . "<br>" . "排名:" . '<font color="red" size="20" style="">' . $sum . '</font>' . "####" . "第" . '<font color="#00FFFF" size="18" style="">'.$page . '</font>'" 页" . "第" .'<font color="#8000FF" size="15" style="">'.$j . '</font>'"名" . $title[0][$i] . "<br>";  
  45.                                         echo "<a href='" . $url . "'>" . "点击搜索结果" . "</a>" . "<br>";  
  46.                                         echo "<hr>";  
  47.                                         break;  
  48.                                 }  
  49.                         }  
  50.                 }  
  51.                 unset ($contents);  
  52.                 if ($rsState === false) {  
  53.                         ggsearch($url_s$keyword, ++ $page); //找不到搜索页面的继续往下搜索  
  54.  
  55.                 }  
  56.         } else {  
  57.  
  58.                 echo '关键字' . $keyword . '10页之内没有该网站排名' . '<br>';  
  59.                 echo "<hr>";  
  60.         }  
  61. }  
  62. if (!emptyempty ($_POST['submit'])) {  
  63.  
  64.         $time = explode(' ', microtime());  
  65.         $start = $time[0] + $time[1];  
  66.         $more_key = trim($_POST['textarea']);  
  67.         $url_s = trim($_POST['url']);  
  68.         if (!emptyempty ($more_key) && !emptyempty ($url_s)) {  
  69.                 /*判断输入字符的规律*/ 
  70.                 if (strstr($more_key"\n")) {  
  71.                         $exkey = explode("\n"$more_key);  
  72.                 }  
  73.                 if(strstr($more_key"|")) {  
  74.                         $exkey = explode("|"$more_key);  
  75.                 }  
  76.                 if(!strstr($more_key"\n")&&!strstr($more_key"|")){  
  77.                 $exkey=array($more_key);  
  78.                 }  
  79.  /*判断是否有www或者http://之类的东西*/ 
  80.                 if (count(explode('.'$url_s)) <= 2) {  
  81.  
  82.                         $url = ltrim($url_s'http://www');  
  83.                         $url = 'www.' . $url_s;  
  84.                 }  
  85.                 foreach ($exkey as $keyword) {  
  86.                         //$keyword;  
  87.                         ggsearch($url_s$keyword);  
  88.                 }  
  89.                 $endtime = explode(' ', microtime());  
  90.  
  91.                 $end = $endtime[0] + $endtime[1];  
  92.  
  93.                 echo '<hr>';  
  94.                 echo '程序运行时间: ';  
  95.                 echo $end - $start;  
  96.                 //die();  
  97.         }  
  98. }  
  99. ?>  
  100. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  101. <html xmlns="http://www.w3.org/1999/xhtml">  
  102. <head>  
  103. <title>抓取排名</title>  
  104.  
  105. </head>  
  106.  
  107. <body>  
  108. <form action="" method="post">  
  109.  
  110.  
  111.                         <span>关键字:</span> <textarea name="textarea" rows="20" cols="40" wrap="off">  
  112. 格式例如:keyword1|keyword2|keyword3  
  113.   或者:      keyword1  
  114.           keyword2  
  115.           keyword3  
  116.   </textarea>  
  117.  
  118.  
  119.                         <span>url地址:</span><input type="text" name="url">  
  120.  
  121.                         <input type="submit" name="submit" value="搜索">  
  122.  
  123.  
  124. </form>  
  125. </body>  
  126. </html>  
说明下,此代码只支持英文关键词,中文关键词自己改下代码就行了









本文转自 mcshell 51CTO博客,原文链接:http://blog.51cto.com/mcshell/728050,如需转载请自行联系原作者

目录
相关文章
|
4月前
|
PHP 开发者
PHP框架中Laravel排名?
【7月更文挑战第2天】PHP框架中Laravel排名?
33 0
|
数据采集 安全 搜索推荐
Google排名上不去的原因?
答案是:缺少GPB外链对外贸官网权重的提升。 Google的排名机制是复杂且持续变化的,如果你发现自己的网站排名没有明显提升,可能有多种原因导致。 以下列出了一些可能影响你网站在Google搜索结果中排名的主要因素。 内容质量不高 内容与搜索查询不匹配 用户搜索的内容和你网站提供的信息不匹配是一个常见原因。 确保你的内容真正解决了用户的疑问或需求。 内容过时或不准确 过时的信息或者不准确的内容可能导致用户迅速离开你的页面,从而增加跳出率。
124 1
Google排名上不去的原因?
|
数据采集 安全 搜索推荐
如何选择优质的Google优化关键词?
答案是:选择竞争难度低且有一定流量的关键词。 在当下数字化市场竞争尤为激烈的背景下,选择合适的Google优化关键词无疑是提高网站排名和吸引流量的重中之重。 正确的关键词可以将你的目标用户精准地引导至你的网站,从而实现更高的转化率。 为此,以下提供了选择Google优化关键词的步骤和技巧。 了解你的目标受众 确定受众兴趣 首先,你需要明确你的目标受众,并了解他们在进行搜索时会使用哪些词汇。 这样,你可以找到与他们需求和兴趣相对应的关键词。
93 0
如何选择优质的Google优化关键词?
|
PHP
漏刻有时采用php常用get提交搜索关键词的注意事项
漏刻有时采用php常用get提交搜索关键词的注意事项
59 0
|
数据采集 JavaScript 搜索推荐
对于Python抓取Google搜索结果的一些了解
对于Python抓取Google搜索结果的一些了解
|
数据采集 缓存 搜索推荐
|
算法 搜索推荐 机器人
Google关键词排名多久做上去?谷歌新网站多久能有排名?
关于优质英文外链建设方面,其实我们知道你们是有想法的,知道要做英文外链,可不知道怎么做,做多少量
292 0
Google关键词排名多久做上去?谷歌新网站多久能有排名?
|
SEO
为什么Google优化排名前期要做长尾关键词?谷歌seo怎么做?
优质的外链建设是你突破流量瓶颈的利器,如果你单纯把内容做好而不去做外链,是不会有好的效果。
127 0
为什么Google优化排名前期要做长尾关键词?谷歌seo怎么做?
|
算法 搜索推荐 SEO
谷歌关键词是怎么排名的?google关键词优化
谷歌会对用户对网站的行为进行评估,例如点击率、停留时间、回头率等,以确定网站对关键词排名的影响。
200 0
谷歌关键词是怎么排名的?google关键词优化
谷歌蜘蛛池怎么搭建?Google蜘蛛池可以帮助谷歌排名吗?
因为谷歌蜘蛛池的原理就是主动让谷歌蜘蛛爬取你指定的页面,爬取就是最终结果了。
395 0
谷歌蜘蛛池怎么搭建?Google蜘蛛池可以帮助谷歌排名吗?
下一篇
无影云桌面