Сколько результатов Google разрешает парсить по запросу?

Следующий 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++;
        }
?>

person Zeid Selimovic    schedule 22.01.2013    source источник


Ответы (4)


Вы уже приняли ответ, в любом случае, если вы все еще находитесь в своем проекте:

Как уже отмечалось, Google не любит парсинга. Это запрещено их условиями, поэтому, если вы согласились с ними, вы нарушаете их автоматическим доступом к сайту. Однако сам Google не заботился о разрешении доступа к веб-сайтам при их запуске. Даже Bing работал на Google и был пойман на этом, я думаю, что большинство других поисковых систем также заимствуют у Google.

Если вам нужно очистить Google, держите скорость ниже их коэффициента обнаружения. Не забивайте их, так как это только закрепит ваш проект, и Google будет больше беспокоиться об автоматическом доступе, который может усложнить нам жизнь в целом.

По моему опыту, вы можете получить доступ к Google со скоростью от 15 до 20 запросов в час (с одного IP) в течение длительного времени без блокировки. Конечно, ваш код должен имитировать браузер и вести себя правильно. Более высокие ставки приведут к тому, что вас заблокируют, сначала (обычно) по временной капче. Решение капчи создает файл cookie, который позволяет вам продолжить. Я видел долговременные капчи и постоянные блокировки одного IP и больших подсетей. Итак, правило № 1: не быть обнаруженным, если вас обнаружат, автоматически остановите парсер.

Так что это немного сложно, но если вы полагаетесь на получение данных таким образом, взгляните на проект PHP с открытым исходным кодом по адресу http://scraping.compunect.com/ Это код PHP, который может очищать несколько ключевых слов и несколько страниц и управлять IP-адресами, чтобы они не блокировались. Я использую этот код для проектов, пока он работает.

Если вам просто нужно собрать небольшой объем данных из Google и реальный рейтинг не важен, взгляните на их API. Если ранжирование имеет значение или вам нужно много данных, вам понадобится парсер Google, подобный тому, на который я дал ссылку.

Кстати, PHP вполне подходит для этой задачи, но запускать его нужно как локальный скрипт, а не через Apache.

person John    schedule 28.03.2014
comment
При использовании Google с 1200 (около) запросов в цикле for со спящим 3 с. Это не заблокировало меня. Но как только я установил сон на 0, он заблокировал меня после некоторых запросов. Теперь, даже если я установил спящий режим на 10 или более секунд, он заблокировал мне такое же количество запросов. ЗАЧЕМ?? - person abdoulsn; 06.12.2019
comment
На самом деле, при очистке больших чисел вам, возможно, придется снизить скорость до менее 10 запросов в час на IP. Но Google иногда может быть взорван, у него есть задержка в ответе на скрейпинг, что может позволить втиснуться в всплеск, но вы будете страдать от повышенного уровня обнаружения на позднем этапе. - person John; 07.12.2019

Сколько результатов 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)..."

Вы можете попытаться обойти их механизмы обнаружения; гугление «очистить поиск google» показывает несколько предлагаемых методов. Но это не то, что поддерживает Google.

person Frank Farmer    schedule 22.01.2013

Поскольку вы анализируете HTML-код реального веб-сайта, не ожидайте, что он вернет произвольное количество результатов только в результате изменения одного параметра.

Как видно на странице Настройки поиска, максимальное количество – 100 элементов: https://www.google.com/preferences?hl=ru

Если вам нужно 1000 результатов, вам придется проанализировать первые 10 страниц результатов отдельно.

person Mate Solymosi    schedule 22.01.2013
comment
Извините, не понял вашу последнюю фразу. Как я могу проанализировать 10 страниц результатов отдельно. - person Zeid Selimovic; 23.01.2013

... Запрещено очищать результаты Google ...

Google предлагает бесплатный и чистый API поиска!

Пример кода (ОТДЫХ):

GET https://www.googleapis.com/customsearch/v1?parameters
person powtac    schedule 22.01.2013