用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,如需转载请自行联系原作者

目录
相关文章
|
8月前
|
数据采集 存储 数据挖掘
超越常规:用PHP抓取招聘信息
使用PHP和爬虫代理IP,自动化采集51job网站的招聘信息,关注公司、职位和待遇,数据存储为CSV,提升招聘效率,节省资源。示例代码展示如何设置代理、解析HTML并提取所需信息。此方法有利于人才市场情报获取和企业招聘策略制定。注意实际应用需考虑错误处理和适应网站结构变化。
超越常规:用PHP抓取招聘信息
|
2月前
|
数据采集 JSON JavaScript
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
|
2月前
|
数据采集 JavaScript 网络安全
为什么PHP爬虫抓取失败?解析cURL常见错误原因
豆瓣电影评分是电影市场的重要参考,通过网络爬虫技术可以高效采集评分数据,帮助电影制作和发行方优化策略。本文介绍使用PHP cURL库和代理IP技术抓取豆瓣电影评分的方法,解决反爬机制、网络设置和数据解析等问题,提供详细代码示例和优化建议。
为什么PHP爬虫抓取失败?解析cURL常见错误原因
|
6月前
|
PHP 开发者
PHP框架中Laravel排名?
【7月更文挑战第2天】PHP框架中Laravel排名?
40 0
|
数据采集 安全 搜索推荐
Google排名上不去的原因?
答案是:缺少GPB外链对外贸官网权重的提升。 Google的排名机制是复杂且持续变化的,如果你发现自己的网站排名没有明显提升,可能有多种原因导致。 以下列出了一些可能影响你网站在Google搜索结果中排名的主要因素。 内容质量不高 内容与搜索查询不匹配 用户搜索的内容和你网站提供的信息不匹配是一个常见原因。 确保你的内容真正解决了用户的疑问或需求。 内容过时或不准确 过时的信息或者不准确的内容可能导致用户迅速离开你的页面,从而增加跳出率。
131 1
Google排名上不去的原因?
|
数据采集 安全 搜索推荐
如何选择优质的Google优化关键词?
答案是:选择竞争难度低且有一定流量的关键词。 在当下数字化市场竞争尤为激烈的背景下,选择合适的Google优化关键词无疑是提高网站排名和吸引流量的重中之重。 正确的关键词可以将你的目标用户精准地引导至你的网站,从而实现更高的转化率。 为此,以下提供了选择Google优化关键词的步骤和技巧。 了解你的目标受众 确定受众兴趣 首先,你需要明确你的目标受众,并了解他们在进行搜索时会使用哪些词汇。 这样,你可以找到与他们需求和兴趣相对应的关键词。
102 0
如何选择优质的Google优化关键词?
|
PHP
漏刻有时采用php常用get提交搜索关键词的注意事项
漏刻有时采用php常用get提交搜索关键词的注意事项
69 0
|
数据采集 JavaScript 搜索推荐
对于Python抓取Google搜索结果的一些了解
对于Python抓取Google搜索结果的一些了解
|
数据采集 缓存 搜索推荐
|
算法 搜索推荐 机器人
Google关键词排名多久做上去?谷歌新网站多久能有排名?
关于优质英文外链建设方面,其实我们知道你们是有想法的,知道要做英文外链,可不知道怎么做,做多少量
311 0
Google关键词排名多久做上去?谷歌新网站多久能有排名?
下一篇
开通oss服务