Как написать скрипт PHP, чтобы найти количество проиндексированных страниц в Google? - PullRequest
6 голосов
/ 26 января 2010

Мне нужно найти количество проиндексированных страниц в Google для конкретного доменного имени, как нам это сделать с помощью сценария PHP?

Итак,

    foreach ($allresponseresults as $responseresult)
    {
        $result[] = array(
            'url' => $responseresult['url'],
            'title' => $responseresult['title'],
            'abstract' => $responseresult['content'],
        );
    }

что мне добавить для оценки количества результатов и как мне это сделать? Я знаю, что это (по оценкам ResultCount), но как мне это добавить? и я называю заголовок, например, следующим образом: $ result ['title'], так как получить номер и как напечатать номер?

Спасибо:)

Ответы [ 6 ]

15 голосов
/ 26 января 2010

Я думаю, что для Google было бы лучше использовать их API поиска RESTful. Смотрите этот URL для примера вызова:

http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=site:stackoverflow.com&filter=0

(Вас интересует значение estimatedResultCount)

В PHP вы можете использовать file_get_contents для получения данных и json_decode для их анализа.

Документацию можно найти здесь:

http://code.google.com/apis/ajaxsearch/documentation/#fonje


Пример

Предупреждение : в следующем коде отсутствует проверка ошибок в ответе!

function getGoogleCount($domain) {
    $content = file_get_contents('http://ajax.googleapis.com/ajax/services/' .
        'search/web?v=1.0&filter=0&q=site:' . urlencode($domain));
    $data = json_decode($content);
    return intval($data->responseData->cursor->estimatedResultCount);
}

echo getGoogleCount('stackoverflow.com');
1 голос
/ 15 января 2013

Google AJAX API оценочных значенийResultCount не дает правильное значение. И попытка разобрать результат html не очень хороший способ, потому что Google блокирует после нескольких поисков.

1 голос
/ 26 января 2010

Вы загрузите http://www.google.com/search?q=domaingoeshere.com с помощью cURL, а затем проанализируете файл, ища результаты <p id="resultStats" бит.

Получившийся html-файл будет храниться в переменной $html, а затем произнесет что-то вроде

$arr = explode('<p id="resultStats"'>, $html);
$bottom = $arr[1];
$middle = explode('</p>', $bottom);

Обратите внимание, что это непроверенный и очень грубый пример. Вам лучше разбирать html с помощью специального парсера или сопоставлять строку с регулярными выражениями.

0 голосов
/ 30 ноября 2015

https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=site:google.com

Курсор ": {" resultCount ":" 111000000" ,» "EstimatedResultCount": "111000000",

0 голосов
/ 29 января 2014
// This will give you the count what you see on search result on web page, 
//this code will give you the HTML content from file_get_contents

header('Content-Type: text/plain');

$url = "https://www.google.com/search?q=your url";
$html = file_get_contents($url);
if (FALSE === $html) {
    throw new Exception(sprintf('Failed to open HTTP URL "%s".', $url));
}

$arr = explode('<div class="sd" id="resultStats">', $html);
$bottom = $arr[1];
$middle = explode('</div>', $bottom);
echo $middle[0];

Output:
About 8,130 results

//vKj

Case 2: you can also use google api, but its count is different:
https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=ursitename&callback=processResults
0 голосов
/ 26 января 2010

Подсчет количества результатов для site:yourdomainhere.com - stackoverflow.com имеет около 830k

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...