2

次のPHPコードは正常に機能しますが、指定したキーワードで1000件のGoogle検索結果を取得するために使用すると、100件の結果しか返されません。Googleは返される結果に制限がありますか、それとも別の問題がありますか?

<?php
require_once ("header.php");
$data2 = getContent("http://www.google.de/search?q=auch&hl=de&num=100&gl=de&ix=nh&sourceid=chrome&ie=UTF-8");
    $dom = new DOMDocument();
    @$dom->loadHtml($data2);
    $xpath = new DOMXPath($dom);

    $hrefs = $xpath->evaluate("//div[@id='ires']//li/h3/a/@href");
    $j = 0;

    foreach ($hrefs as $href)
    {            

        $url = "http://www.google.de/" . $href->value . "";
        echo "<b>";

        echo "$j ";
      echo   $url = get_string_between($url, "http://www.google.de//url?q=", "&sa=");
      echo "<br/>";

      $j++;
        }
?>
4

4 に答える 4

4

Googleはリクエストをスクレイプすることを許可する結果はいくつありますか?

ゼロ。ゼロページをスクレイプすることが許可されています。

Please refer to clause 5.3 of the Google Terms of Service:

"You specifically agree not to access (or attempt to access) 
any of the Services through any automated means (including use 
of scripts or web crawlers)..."

あなたは彼らの検出メカニズムを回避しようとすることができます。「スクレイプグーグル検索」をグーグルすると、いくつかの提案されたテクニックが見つかります。しかし、これはグーグルがサポートするものではありません。

于 2013-01-22T23:44:44.340 に答える
4

とにかく、まだプロジェクトに参加している場合は、すでに回答を受け入れています。

人々が指摘したように、グーグルはこすられるのが好きではありません。彼らの条件では許可されていないので、あなたが彼らに同意した場合は、自動的にサイトにアクセスして彼らを破ります。ただし、Google自体は、開始時にWebサイトへのアクセス許可を気にしませんでした。BingはGoogleを利用していて、それをやっていることに気づきましたが、他のほとんどの検索エンジンもGoogleから借りていると思います。

Googleをスクレイプする必要がある場合は、検出率を検出率より低くしてください。それらを槌で打つことはしないでください。これはあなたのプロジェクトを根底に置くだけであり、Googleは自動アクセスについてより懸念し、一般的に私たちにとって困難になる可能性があります。

私の経験から、ブロックされることなく、1時間あたり15から最大20のリクエスト(1つのIPを使用)のレートでGoogleにアクセスできます。もちろん、コードはブラウザをシミュレートして適切に動作する必要があります。レートが高いと、最初に(通常は)一時的なキャプチャによってブロックされます。キャプチャを解決すると、続行できるCookieが作成されます。私は長期的なキャプチャを見てきましたし、1つのIPと大きなサブネットの永続的なブロックを見てきました。したがって、ルール#1:検出されないでください。検出された場合は、スクレーパーを自動的に停止します。

したがって、少し注意が必要ですが、その方法でデータを取得することに依存している場合は、http://scraping.compunect.com/にあるオープンソースのPHPプロジェクトを参照してください 。これは、複数のキーワードと複数のページをスクレイピングできるPHPコードです。 IPアドレスを管理して、ブロックされないようにします。私はそのコードをプロジェクトに使用していますが、これまでのところ機能しています。

Googleから少量のデータを収集する必要があり、実際のランキングが重要でない場合は、APIを確認してください。ランキングが重要な場合、または大量のデータが必要な場合は、私がリンクしたようなGoogleスクレーパーが必要になります。

ところで、PHPはこのタスクに非常に適していますが、Apacheを介さずに、ローカルスクリプトとして実行する必要があります。

于 2014-03-28T02:19:20.493 に答える
2

実際のWebサイトのHTMLを解析しているので、単一のパラメーターを変更した結果として、任意の数の結果が返されることを期待しないでください。

検索設定ページでわかるように、100アイテムが最大です: https ://www.google.com/preferences?hl = en

1000件の結果が必要な場合は、最初の10件の結果ページを個別に解析する必要があります。

于 2013-01-22T23:37:33.767 に答える
1

...Googleの結果を取得することは許可されていません...

Googleは無料でクリーンな検索APIを提供しています!

サンプルコード(REST):

GET https://www.googleapis.com/customsearch/v1?parameters
于 2013-01-22T23:41:09.773 に答える