Ограничение API поиска Bing и ограничение одной страницы на домен - PullRequest
0 голосов
/ 11 марта 2020

Я использовал 7-дневную пробную версию Bing Search API (Гость), чтобы получать результаты поиска по запросу.

Я использую тот же код, который указан в https://docs.microsoft.com/en-us/azure/cognitive-services/bing-web-search/quickstarts/php документация. Я добавил foreach l oop, чтобы получить результаты поиска для каждой страницы. Для моего поискового запроса я получил количество результатов поиска API totalEstimatedMatches как 38500000.

Ниже приведен мой код:

function BingWebSearch ($url, $key, $query, $count="", $offset="") {
    $headers = "Ocp-Apim-Subscription-Key: $key\r\n";
    $options = array ('http' => array (
                          'header' => $headers,
                           'method' => 'GET'));

    // Perform the request and get a JSON response.
    $context = stream_context_create($options);
    $queryString = "?q=" . urlencode($query);
    if ( strlen(trim($count)) > 0 ) $queryString .= "&count=".$count;
    if ( strlen(trim($offset)) > 0 ) $queryString .= "&offset=".$offset;
    $result = file_get_contents($url . $queryString , false, $context);

    // Extract Bing HTTP headers.
    $headers = array();
    foreach ($http_response_header as $k => $v) {
        $h = explode(":", $v, 2);
        if (isset($h[1]))
            if (preg_match("/^BingAPIs-/", $h[0]) || preg_match("/^X-MSEdge-/", $h[0]))
                $headers[trim($h[0])] = trim($h[1]);
    }
    return array($headers, $result);
}

$accessKey = 'xxxxxxxxxxxxxxxx';
$endpoint = 'https://api.cognitive.microsoft.com/bing/v7.0/search';
$term = 'myserchterm';

$searchOffset = 0;
$offset = 0;
$totalEstimatedMatchesCount = 38500000;
$count = 5000;
for ( $searchCount=0; $searchCount <= $totalEstimatedMatchesCount; $searchCount = $searchCount+$searchOffset ) {
        $offset = $offset+$searchOffset;
        list($headers, $jsonPageResult) = BingWebSearch($endpoint, $accessKey, $term, $count, $offset);
        $bingSearchPageArray = json_decode($jsonPageResult);
        $searchOffset = count($bingSearchPageArray['webPages']['value']);
        // code to store result to database
        .....................................
}

Этот код дал только 930 результаты, и я получил электронное письмо как

Вы приближаетесь к пределу квоты на свою подписку на бесплатный продукт Bing SearchV7. Эта квота будет продлена 04/09/2020.

Ниже приведены сведения об использовании квоты для подписки:

Объем квот Звонки квота вызовов пропускная способность квота пропускной способности

подписка 2.26k 3.00k 58.48MB

Какое максимальное число API звонки я могу сделать? Как я могу ограничить поиск только по веб-страницам и только по одной странице на домен (ie, мне нужно только получить индексную страницу. Мне просто нужен домен на основе моего поиска, поэтому нет необходимости снова получать те же страницы домена в результате )?

Может ли кто-нибудь помочь мне.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 12 марта 2020

Подписка Bing Search v7 API распространяется на несколько сервисов Bing Search (поиск изображений Bing, поиск новостей Bing, поиск видео Bing, визуальный поиск Bing и веб-поиск Bing), на этой странице с ценами разъясняются бесплатные ограничения: https://azure.microsoft.com/en-us/pricing/details/cognitive-services/search-api/

Вы можете отфильтровать результаты поиска по topi c (веб-страницы, изображения, видео, новости и т. Д. c.), Используя фильтр запросов: https://docs.microsoft.com/en-us/azure/cognitive-services/bing-web-search/filter-answers

Чтобы ограничить свой поиск только индексными страницами, попробуйте некоторые из этих префиксов расширенного поиска, которые вы можете добавить к своему запросу: https://help.bing.microsoft.com/#apex / 18 / en-US / 10001 / -1

...