前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >豆瓣isbn查询api接口制作教程【源码已开源】

豆瓣isbn查询api接口制作教程【源码已开源】

作者头像
许坏
发布2019-07-09 14:47:43
7.9K2
发布2019-07-09 14:47:43
举报
文章被收录于专栏:宅机吧宅机吧

之前腾讯出了个私房书柜项目的云开发教程,所用的接口就是豆瓣的isbn查询接口,然后它就一下大火了,但是大概在四月份左右,它的接口就失效了,顺便连带的开放平台都关闭了,不知道其原因,反正就是用不了了。

因为最近在做的一个二手书项目,其中发布书籍需要使用isbn查询功能,首先想到的就是豆瓣,因为之前我也看过那个私房书柜教程,所以对它印象深刻。

原接口是这样的:

代码语言:javascript
复制
https://api.douban.com/v2/book/isbn/9787543632608

但是现在却返回说无效密钥,也就是不公开提供了

代码语言:javascript
复制
{"msg":"invalid_apikey","code":104,"request":"GET /v2/book/isbn/9787543632608"}

办法是有的,分析了一下豆瓣官网isbn的查询方法:

地址:https://book.douban.com/

然后利用php进行重定向和curl,取出关键内容,详情代码:

代码语言:javascript
复制
<?php
//剪切
function cut($content,$start,$end) {
$r = explode($start, $content);
if (isset($r[1])) {
$r = explode($end, $r[1]);
return $r[0];
}
return '';
}
//模拟get请求
function get($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.7 (KHTML, like Gecko) Chrome/20.0.1099.0 Safari/536.7 QQBrowser/6.14.15493.201');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
$isbn = @$_GET['isbn'];
$surl = 'https://book.douban.com/isbn/'.$isbn.'/';
$headers = json_encode(get_headers($surl),true);
$headers = json_encode($headers,true);
$surl  = cut($headers,'Location: ','"');
$surl  = str_replace('\\','' ,$surl);//302地址
$data = get($surl);
$data_1=cut($data,'application/ld+json">','</script>');
 $data_1 = json_decode($data_1,true);
$res['title'] = $data_1['name'];//书名
$author = $data_1['author'];
if($author[0]==''){
  $author[0]['name'] = '未知';
}
$res['author'] =$author;//作者
$res['logo'] = cut($data,'data-pic="','"');//图标
$publisher = cut($data,'出版社:</span>','<br/>');
if($publisher==''){
  $publisher ='未知';
}
$res['publisher'] =$publisher;//出版社
$published = cut($data,'出版年:</span>','<br/>');
if($published==''){
  $published ='未知';
}
$res['published'] =$published;//出版年
$page = cut($data,'页数:</span>','<br/>');
if($page==''){
  $page ='未知';
}
$res['page'] =$page;//页数
$price = cut($data,'定价:</span>','<br/>');
if($price==''){
  $price ='未知';
}
$res['price'] =$price;//定价
$designed = cut($data,'装帧:</span>','<br/>');
if($designed==''){
  $designed ='未知';
}
$res['designed'] =$designed;//装帧
$description = cut($data,'class="intro">','</p>');
$description = explode('<p>',$description)[1];
if($description==''){
  $description ='未知';
}
$res['description'] =$description;//简介
$res = json_encode($res,true);
echo $res;
?>

使用方法:

http://www.xxx.com?isbn=12345678907

当然,isbn接口还有很多,比如说google免费接口

代码语言:javascript
复制
https://www.googleapis.com/books/v1/volumes?q=isbn:9787562404507

只不过谷歌因为在墙外要稍微处理一下才能用,也不麻烦,但我没用他这个,主要原因是因为录入的数据不全,目前我的项目使用的是其它平台付费的,差不多一分钱调用一次,也不贵,使用的时候把每次调用得接口存进数据库就好了,下次检测到一样的就从数据库拿就OK,使用频率不会很大,如果对数据要求很全面,建议考虑一些平台的付费接口。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅机吧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档