【问题标题】:Google Search API Backend [closed]谷歌搜索 API 后端 [关闭]
【发布时间】:2009-06-26 09:08:04
【问题描述】:

我想知道你们中是否有人知道如何实现一个后端系统,该系统将从谷歌检索 SEO 信息(网站排名、谷歌中前 X 个结果中的#ocurrences 等)。

我知道 Google AJAX 搜索 API (code.google.com/apis/ajaxsearch/) 将允许您检索内容而无需“wget”或“curl”,但使用搜索信息似乎不是合法(code.google.com/apis/ajaxsearch/terms.html)。

关于如何实现这一点的任何想法?

【问题讨论】:

    标签: php api search


    【解决方案1】:

    我已经调查了如何与 Google 一起做这件事,而 AFAICT 真的没有办法合法地做这件事。由于他们的摇钱树是那些 SERP,他们不允许任何人以任何理由抓取它们。

    有许多服务可以为您抓取 Google,但据我所知,它们都是在违反 Google 的 TOS 的。如果你想办法合法地做到这一点,请告诉我。我猜有一些人在获得许可的情况下进行刮擦,但我不确定他们是谁。

    到目前为止,我唯一的想法是:

    • 设置用于自动执行客户 Google 查询的“代理服务器”。然后代理可以看到结果并进行抓取,而且它不是“自动化的”。如果用户输入 20 个词条,则打开 20 个框架,这些框架通过代理服务器进行搜索。
    • 捎带访问网站的网络流量。简而言之:我访问了您的网站,后台 JavaScript 调用搜索 Google 并将结果发布到您的网站。这是不道德的,因为我可能想知道为什么“您的”搜索会出现在我的 Google 历史记录中。

    问题是“自动化的”。我有一种感觉,那些这样做的服务实际上在世界各地拥有大量计算机,以使(对谷歌)看起来它们没有被刮掉。我猜除非你开始从单个 IP 产生一些严重的流量,否则你会没事的。

    也许你应该请求许可?

    【讨论】:

      【解决方案2】:

      http://toolbarqueries.google.com 是 Google 工具栏用来(或曾经用来)获取链接的 PageRank 的工具。它可以很容易地通过首先对 URL 进行散列以指定格式进行检查。

      AFAIK 这是一个未记录的 API,因此不清楚使用它的法律含义。

      问候, DrSlump

      【讨论】:

        【解决方案3】:

        在同一文件夹中创建文件querygoogle.php

        <?php
        session_start();
        // Here's the Google AJAX Search API url for curl. It uses Google Search's site:www.yourdomain.com syntax to search in a specific site. I used $_SERVER['HTTP_HOST'] to find my domain automatically. Change $_POST['searchquery'] to your posted search query
        
        $url = 'http://ajax.googleapis.com/ajax/services/search/web?rsz=large&v=1.0&start=20&q=' . urlencode('' . $_POST['searchquery']);
        // use fopen and fread to pull Google's search results
        $handle = fopen($url, 'rb');
        $body = '';
        while (!feof($handle)) {
            $body .= fread($handle, 8192);
        }
        fclose($handle);
        
        // now $body is the JSON encoded results. We need to decode them.
        $json = json_decode($body);
        
        // now $json is an object of Google's search results and we need to iterate through it.
        foreach($json->responseData->results as $searchresult)
        {
            if($searchresult->GsearchResultClass == 'GwebSearch')
            {
                $formattedresults .= '
            <div class="searchresult">
            <h3><a href="' . $searchresult->unescapedUrl . '">' . $searchresult->titleNoFormatting . '</a></h3>
            <p class="resultdesc">' . $searchresult->content . '</p>
            <p class="resulturl">' . $searchresult->visibleUrl . '</p>
            </div>';
            }
        }
        
        $_SESSION['googleresults'] = $formattedresults;
        header('Location: ' . $_SERVER['HTTP_REFERER']);
        exit;
        ?>
        

        并在同一文件夹中创建另一个文件search.php

        <?php
        session_start();
        ?>
        
        <form method="post" action="querygoogle.php">
        <label for="searchquery"><span class="caption">Search this site</span> <input type="text" size="20" maxlength="255" title="Enter your keywords and click the search button" name="searchquery" /></label> <input type="submit" value="Search" />
        </form>
        
        <?php
        if(!empty($_SESSION['googleresults']))
        {
            echo $_SESSION['googleresults'];
            unset($_SESSION['googleresults']);
        }
        ?>
        

        点击搜索按钮,结果以 echo $_SESSION['googleresults']; 打印

        【讨论】:

          猜你喜欢
          • 2014-09-23
          • 2016-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多