在Freebase的旅行目的地上分页

问题描述 投票:1回答:2

我正在尝试从Freebase API获取所有旅行目的地。根据文档,我正在使用游标和限制参数。我从游标从0开始并限制为100,然后在每次迭代中将100加到游标上。问题是我用这种方法只能得到76个结果。 Freebase数据库中应该有cca 1500个旅行目的地。

文档:

https://developers.google.com/freebase/v1/search

这是我的代码:

<?php

require_once __DIR__ . '/vendor/autoload.php';

$apiKey = 'SUPER_SECRET_API_KEY';

use Guzzle\Http\Client;

//// GOOGLE FREEBASE
$client = new Client('https://www.googleapis.com');

$cursor = 0;
$limit = 100;
$results = array();

do {

    $request = $client->get('/freebase/v1/search');
    $request->getQuery()->set('key', $apiKey);
    $request->getQuery()->set('filter', '(all type:/travel/travel_destination)');
    $request->getQuery()->set('cursor', $cursor);
    $request->getQuery()->set('limit', $limit);
    $request->getQuery()->set('indent', 'true');
    $request->getQuery()->set('query', '');

    $response = $request->send()->json();

    foreach ($response['result'] as $result) {
        $results[] = $result;
    }

    $cursor += $limit;

} while (count($response['result']) > 0);

echo count($results);exit;

它打印76。

php google-api freebase
2个回答
1
投票

返回详尽的结果不是搜索API的预期用例,因此最好使用MQL或批量数据转储来完成。

由于此第一个查询返回了完整的100个结果,所以我假设您的PHP中存在一个错误。如果我不得不猜测,我想您可能是在计算迭代次数或上一次迭代(可能是后者)中返回的结果数。


0
投票

我可以在WordPress网站中使用任何插件或第三方脚本来通过自动API或流程抓取所有旅行目的地。

我想在this travel website上创建新页面并获取数据。

© www.soinside.com 2019 - 2024. All rights reserved.