我如何通过PHP获得谷歌搜索结果的位置

时间:2011-02-12 15:48:35

标签: php

我如何通过php获取谷歌搜索结果pozition?

1 个答案:

答案 0 :(得分:1)

您问题的核心是:您希望从Google搜索结果集中提取多少关键字和排名?

如果您想要准确的位置,建议的Google搜索API毫无价值。 同样重要的是,网站的排名/位置不仅取决于关键字。 它至少也取决于: *安全搜索和类似选项 *页面中的结果数量(您需要坚持10个结果) *您的位置(使用& hl参数有助于克服此限制) *您的IP /代理的质量(IP的滥用历史可以改变结果集)

我的第一个问题:您希望从Google获取多少关键字至关重要。 如果你用超过几个请求点击谷歌,你将收到验证码/灰名单和类似的麻烦。您可以使用一个IP每天发送大约500个请求(传播良好),因此对于更大规模的关键字分析,您需要代理。

PHP非常适合刮取Google的排名,您可以使用libCURL和DOM解析器来访问页面并处理原始的html数据。 在此处获取PHP Google排名检查器的源代码:http://google-rank-checker.squabbel.com 它包含您所需要的一切,并且是开源的。

如果你想自己做所有事情,这里有一个帮助你的开始:

用于访问Google的LibCURL。 libCURL可以管理cookie,支持代理,支持超时等。 它还支持HTTP标头,因此您可以使用您选择的用户代理字符串。 你不想在那里有“PHP脚本”或类似的东西,嗯?

示例代码:

  $ch = curl_init();
  curl_setopt ($ch, CURLOPT_HEADER, 0);
  curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER , 1);
  $curl_proxy = "$ip:$port"; 
  curl_setopt($ch, CURLOPT_PROXY, $curl_proxy);  // comment this to test without proxy   
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20);               
  curl_setopt($ch, CURLOPT_TIMEOUT, 20);
  curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en; rv:1.9.0.4) Gecko/2009011913 Firefox/3.0.6");
  $url="your google search q="
  curl_setopt ($ch, CURLOPT_URL, $url);
  $data = curl_exec ($ch);
  curl_close($ch);

现在解析$ data你使用DOM。 PHP的DOM解析器能够像真正的浏览器一样通过html代码。 使用简单的strstr / substr / regex,您将很难获得各种谷歌搜索结果/排名,我已经尝试过并且没有成功。

Google将结果存储在

  • 标记中(不时更改,保持最新)

    $dom = new domDocument;
    $dom->strictErrorChecking = false;
    $dom->preserveWhiteSpace = true;        
    @$dom->loadHTML($htmdata);
    $lists=$dom->getElementsByTagName('li');
    $results=array();
    foreach ($lists as $list)   
    {
        // now go through the <li> nodes and get the content
        // if you are stuck check the php code at google-rank-checker.squabbel.com, it contains a working function
    }
    

    你还有很多工作要做。确保您没有向Google发送请求,请确保在脚本“疯狂”的情况下检测验证码。 使用适当的代理,检查我提到的文章和代码,了解详细信息。