Php 在Freebase中对旅行目的地进行分页
我正在尝试从Freebase API获取所有旅游目的地。根据文档,我正在使用游标和限制参数。我从游标0开始,限制为100,然后在每次迭代中向游标添加100。问题是这样我只得到76个结果。Freebase数据库中应该有cca 1500个旅游目的地 文件: 这是我的密码:Php 在Freebase中对旅行目的地进行分页,php,google-api,freebase,Php,Google Api,Freebase,我正在尝试从Freebase API获取所有旅游目的地。根据文档,我正在使用游标和限制参数。我从游标0开始,限制为100,然后在每次迭代中向游标添加100。问题是这样我只得到76个结果。Freebase数据库中应该有cca 1500个旅游目的地 文件: 这是我的密码: <?php require_once __DIR__ . '/vendor/autoload.php'; $apiKey = 'SUPER_SECRET_API_KEY'; use Guzzle\Http\Clien
<?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;
返回详尽的结果不是搜索API的预期用途,因此最好使用MQL或批量数据转储
由于第一个查询返回100个完整的结果,我假设您的PHP中有一个bug。如果非要我猜的话,我猜你要么在计算迭代次数,要么在计算上一次迭代中返回的结果数量,可能是后者。返回详尽的结果不是搜索API的预期用途,因此最好使用MQL或批量数据转储
由于第一个查询返回100个完整的结果,我假设您的PHP中有一个bug。如果让我猜的话,我猜你要么在计算迭代次数,要么在计算上一次迭代返回的结果数量,可能是后者。谢谢Tom,我已经使用MQL解决了这个问题。顺便说一句,我不认为我的代码中有错误。我尝试过从浏览器手动调用API,但我无法得到更多的结果。我认为搜索API中可能有一个bug。但是MQL API可以工作,所以我使用了它。我在编写答案之前对其进行了测试,在使用OpenRefine获取和解析结果的前两个页面中,每个页面都获得了100个结果的完整返回。感谢Tom,我使用MQL解决了这个问题。顺便说一句,我不认为我的代码中有错误。我尝试过从浏览器手动调用API,但我无法得到更多的结果。我认为搜索API中可能有一个bug。但是MQLAPI可以工作,所以我使用了它。我在编写答案之前对其进行了测试,并使用OpenRefine获取和解析结果,前两个页面中的每个页面都得到100个结果的完整返回。