Запросить результаты поиска Google с Javascript / PHP - PullRequest
2 голосов
/ 26 января 2011

Я хочу дополнить свой веб-сервис списком результатов поиска Google. Моя цель - получить первые 10-20 результатов, указав некоторые ключевые слова и некоторую другую информацию (например, диапазон данных).

Какие у меня есть возможности? Может ли это быть реализовано только с помощью технологии на стороне клиента, такой как Javascript? Или мне в конечном итоге приходится полагаться на динамически загружаемый PHP-скрипт, который загружает и анализирует HTML-код с помощью cURL?

Ответы [ 2 ]

1 голос
/ 27 января 2011

Вот как я делал это в прошлом с помощью запроса cURL и API Google AJAX:

function getResults($term,$page = 0){
    $googleurl = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=".(str_replace(' ','+',$term);
    if($page >0){
        $googleurl .= "&start=".($page*10);
    }
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$googleurl);   
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $Page_Contents = curl_exec($ch);
    curl_close($ch);
    return $Page_Contents;
}
$keywordCheck = array('ajax','php','cURL','other search terms');

foreach($keywordCheck as $wordKey => $wordValue){
    $term = str_replace(' ','+',$wordValue);
    for($i =0; $i < 5; $i++){
        $page = getResults($term,$i);
        if(preg_match("/mysite.com/",$page)){
            $links = explode('GsearchResultClass',$page);
            foreach ($links as $key => $value){
                if(preg_match("/mysite.com/",$value)){
                    preg_match("/url\":\"([^\"]*)\",/",$value,$match);
                    $match = str_replace('",','',str_replace('url":"','',$match[0]));
                    $results[$wordValue] .= $wordValue. ' is ranked #'.(($i*10)+($key)).': '.$match.'<br/>';
                }
            }
        }
    }
    sleep(2);
}

, затем в теле страницы:

<div id="results">
    <?php foreach($results as $key => $value){
        if($value == ''){
            echo '<p>'.$key.' not found in top 50 results</p>';
    }
    else{
        echo '<p>'.$value.'</p>';
    }
    }?>
</div>

НекоторыеЧто нужно понять:

1) Используйте sleep () для паузы между запросами, чтобы избежать запрета на перегрузку сервера

2) В последний раз, когда я проверял, API поиска ограничивает вас 1000 запросамидень, поэтому планируйте соответственно

3) API запрашивает базу данных, отличную от www.google.com, поэтому результаты могут немного отличаться от тех, которые вы видите при обычном поиске

ЭтоСкрипт просто проверяет позиции моих URL-адресов по определенным ключевым словам, которые я хочу отслеживать в пределах первых 50 результатов ... очевидно, вам нужно будет внести коррективы, если вы не сфокусированы на 1 сайте ...

чтобы добавить пользовательские фильтры, просто выполните «расширенный» поиск и посмотрите на строку запроса, то же самое для API.Просто добавьте по мере необходимости, например, для диапазона дат с 1 января 2011 г. по 24 января 2011 г .:

$googleurl .= '&tbs=cdr%3A1%2Ccd_min%3A1%2F4%2F2011%2Ccd_max%3A1%2F24%2F2011';
1 голос
/ 26 января 2011

Вы хотите проверить их API поиска JSON (который является частью их более крупного пользовательского API поиска ).Пример на этой странице написан на javascript, но вы также можете легко реализовать это в php.

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