Мне нужно найти количество проиндексированных страниц в Google для определенного имени домена, как мы это сделаем с помощью PHP-скрипта?
Так,
foreach ($allresponseresults as $responseresult) { $result[] = array( 'url' => $responseresult['url'], 'title' => $responseresult['title'], 'abstract' => $responseresult['content'], ); }
что я добавляю для оценочного количества результатов и как это сделать? Я знаю, что это (оценкаResultCount), но как я могу добавить это? и я называю заголовок, например, следующим образом: $ result ['title'], и как получить номер и как напечатать номер?
Спасибо 🙂
Я думаю, было бы лучше, если бы Google использовал свой RESTful Search API. См. Этот URL для примера вызова:
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=site:stackoverflow.com&filter=0
(Вас интересует estimatedResultCount
значениеResultCount)
В PHP вы можете использовать file_get_contents
для получения данных и json_decode
для его анализа.
Вы можете найти документацию здесь:
Предупреждение : Следующий код не имеет какой-либо проверки ошибок в ответе!
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');
Вы загрузите 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 с помощью выделенного синтаксического анализатора или сопоставить строку с регулярными выражениями.
Значение google ajax api. Значения оценкиResultCount не дают правильного значения. И попытка проанализировать html-результат не является хорошим способом, потому что блоки Google после нескольких поисков.
Подсчитайте количество результатов для site:yourdomainhere.com
– stackoverflow.com имеет около 830 тыс.
// 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
https://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=site:google.com
курсор ": {" resultCount ":" 111 000 000 "," "ratedResultCount": "111000000",