栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

php实现豆瓣isbn查询API接口制作

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

php实现豆瓣isbn查询API接口制作

引言

因为最近要做一个扫描图书的ISBN编码获取图书信息的功能,要用到一个开放的API,首先想到的就是豆瓣。但是豆瓣由于什么原因关闭了开放的API。

一.实现效果

二.代码实现

1.首先分析豆瓣图书首页查询ISBN编码的方法。地址https://book.douban.com/。

2.分析豆瓣的界面结构以及自己需要抓取的信息。

3.利用php进行重定向和curl,取出关键的内容。

注意:本套代码采用的TP5.1编写)详细代码:

 public function getBookInfo(){
 $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 = getIsbn($surl);
 $data_1 = cut($data, 'application/ld+json">', '');
 $data_1 = json_decode($data_1, true);
 $res['title'] = $data_1['name'];//书名
 $res['logo'] = cut($data, 'data-pic="', '"');//图标
 $author = $data_1['author'];
 if ($author[0] == '') {
     $author[0]['name'] = '未知';
 }
 $res['author'] = $author;//作者
 //相关书籍推荐
 $publisher = cut($data, '出版社:', '
'); if ($publisher == '') { $publisher = '未知'; } $author_desc = cut($data, 'class="indent ">', ''); $res['author_desc'] = cut($author_desc, '

', '

');//作者简介 $res['publisher'] = $publisher;//出版社 $published = cut($data, '出版年:', '
'); if ($published == '') { $published = '未知'; } $res['published'] = $published;//出版年 $page = cut($data, '页数:', '
'); if ($page == '') { $page = '未知'; } $res['page'] = $page;//页数 $price = cut($data, '定价:', '
'); if ($price == '') { $price = '未知'; } $res['price'] = $price;//定价 $designed = cut($data, '装帧:', '
'); if ($designed == '') { $designed = '未知'; } $res['designed'] = $designed;//装帧 $description = cut($data, 'class="intro">', '

'); $description = explode('

', $description)[1]; if ($description == '') { $description = '未知'; } $res['description'] = $description;//简介 return show(1,'请求成功',$res); }

common.php中实现cut()方法、getIsbn()和show()方法。

function cut($content, $start, $end)
{
    $r = explode($start, $content);
    if (isset($r[1])) {
 $r = explode($end, $r[1]);
 return $r[0];
    }
    return '';
}
function getIsbn($url) //curl get请求
{
    $postUrl = $url;
    $curlPost = 'GET';
    $curl = curl_init();//初始化curl
    curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
    curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
    curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //不验证证书下同
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    $data = curl_exec($curl);//运行curl
    curl_close($curl);
    return $data;
}
function show($status, $message, $data = [])
{
    $data = [
 'status' => $status,
 'message' => $message,
 'data' => $data
    ];
    return json_encode($data, JSON_UNESCAPED_UNICODE);
}

使用方法:http://www.xxxx.com?isbn=12345678955 (注意:isbn后输入11位的isbn编码)

当然isbn接口有很多,大家可以根据自己的需求自行选择和修改。

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号