首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Mendeley搜索目录分页

Mendeley搜索目录分页
EN

Stack Overflow用户
提问于 2017-08-23 21:18:10
回答 1查看 60关注 0票数 0

我已经用PHP编写了一段代码来查询Mendeley中的搜索目录并检索特定期刊的数据。然而,问题是结果被限制到100。下面是用PHP编写的代码。如何在100个结果后添加mendeley分页?

代码语言:javascript
运行
复制
function auth(){

$client_id = '';
$client_secret = '';
$redirect_uri = '';

if(isset($_GET['code'])) {

    if(!isset($_SESSION['access_token'])) {
        # Authorize
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,"https://api.mendeley.com/oauth/token");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded;"));
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('client_id'=>$client_id, 'client_secret'=>$client_secret, 'code'=>$_GET['code'],'redirect_uri'=>$redirect_uri, 'grant_type'=>'authorization_code')));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
        //curl_setopt ($ch, CURLOPT_CAINFO, getcwd()."\cacert.pem");
        $server_output = curl_exec ($ch);
        $errmsg  = curl_error($ch) ;
        if($errmsg) {
            var_dump($errmsg);
        }

        curl_close ($ch);

        $result = json_decode($server_output, true);
        // var_dump($result);
        $_SESSION['access_token'] = $result['access_token'];
    }
    # Call the main function
    main();

}

function getResponse($path) {

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://api.mendeley.com/".$path);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: Bearer '.$_SESSION['access_token'],
    'Accept: application/vnd.mendeley-document.1+json'
));

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
//curl_setopt ($ch, CURLOPT_CAINFO, getcwd()."\cacert.pem");

$server_output = curl_exec ($ch);
$responseCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$header_len = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($server_output, 0, $header_len);
$body = substr($server_output, $header_len);

$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

$errmsg  = curl_error($ch) ;
if($errmsg){
    var_dump($errmsg);  
}

curl_close ($ch);

return json_decode($server_output, true);

}


    function main(){


  $search_terms = 'Academy of Management Journal';

$min_year='2012';
$max_year='2016';



    $result = getResponse('/search/catalog?source='.urlencode($search_terms).'&min_year='.$min_year.'&max_year='.$max_year.'&limit=2' . '&view=stats' );
    var_dump($result);

    if(isset($result)) {
        if(isset($res['id'])) {
        $data[] = getResponse('/catalog/'.$res['id']);
        var_dump($data);
       sleep(2);
    }



}
EN

回答 1

Stack Overflow用户

发布于 2017-08-29 23:18:24

根据Mendeley Pagination documentation,可以从HTTP响应头的Link字段中获得分页URL

我将使用curl作为原型工具来演示门德利分页的用法。

在您运行的示例中

代码语言:javascript
运行
复制
curl -s -D - 'https://api.mendeley.com//search/catalog?source=Academy%20of%20Management%20Journal&min_year=2012&max_year=2016' -H "Authorization: Bearer $ACCESS_TOKEN" -H 'Accept: application/vnd.mendeley-document.1+json'

生成以下标头

代码语言:javascript
运行
复制
HTTP/1.1 200 OK
Content-Type: application/vnd.mendeley-document.1+json
Date: Tue, 29 Aug 2017 15:13:34 GMT
Link: <https://api.mendeley.com/search/catalog?marker=00000000-0000-000a-0000-000000000000&limit=10&source=Academy%20of%20Management%20Journal&min_year=2012&reverse=false&max_year=2016&order=asc>; rel="next"
Mendeley-Count: 4185202
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Mendeley-Trace-Id: Anv9p0YeJtY
Content-Length: 17779
Connection: keep-alive

因此,可以使用URL解析下一页

代码语言:javascript
运行
复制
https://api.mendeley.com/search/catalog?marker=00000000-0000-000a-0000-000000000000&limit=10&source=Academy%20of%20Management%20Journal&min_year=2012&reverse=false&max_year=2016&order=asc
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45840881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档