美文网首页
EX07——API调用练习

EX07——API调用练习

作者: nicokani | 来源:发表于2018-07-14 21:45 被阅读0次

收集网络资源的时我们很多时候会使用爬虫技术,随着技术的发展,恶意的爬虫模拟人的行为和浏览器的行为进行信息爬取,有时往往给被爬网站带来诸多麻烦,爬虫技术与反爬虫技术之间的战争一直在继续。为了能使网络资源得到合情合理的采集,也有很多应用或网站提供了相应的API,通过调用这些API我们就能合理地拿到想要的数据信息。
下面将借助豆瓣API进行合理地获取豆瓣读书的信息。

一、了解豆瓣API

豆瓣为开发者提供了一个开发者文档,这里面有豆瓣API的参数说明和访问控制等信息


如果要使用豆瓣的API走正规渠道是需要进行身份验证即申请APIkey的,但是目前好像不能进行申请了,但是也不影响接下来通过API获取信息的实验。
从开发者文档那里了解到豆瓣读书的一些API的构造:

下面我将通过id来获取豆瓣的图书信息;其API如下:
https://api.douban.com/v2/book/:id  #id为图书的id号,例如:1220568

二、通过豆瓣读书的API获取图书信息

(1)通过php获取

<html>
<head>  
</head>
<body>
<div>
<form action="">
<input type="text" name="bookid" placeholder="请输入书的id" >
  <input type="submit" class="sub">
</form>
</div>  
     <div class="container" style="margin-top: 100px">
<?php 
if(isset($_GET['bookid'])){
    $bookid=$_GET['bookid'];
    $url = "https://api.douban.com/v2/book/$bookid";
    $data = file_get_contents($url);
    echo $data;
}
?>
     </div>
     </body>
     </html>

运行,输入图书id:1220568 结果如下图:


当输入其他的id号时同样可以获取到对应的图书信息
(2)jq+ajax跨域获取
html文件中的表单

<form > 
<input type="text" name="bookid" id="bookid" >
<input type="button"  id="sub" value="查询" />
</form>

js文件:

$(document).ready(function(){
    document.getElementById('sub').onclick=function(){   #点击事件
        Get();  
    }   
});
function Get(){
    var bookid = $("#bookid").val();              #获取表单中传递的id值
        $.ajax({                                               #ajax跨域获取图书信息
            async:false,
            type : "get",
            url : "https://api.douban.com/v2/book/"+bookid,         
            dataType:"jsonp",                 
            success: function(result){                      #result为返回的图书信息是json格式的
                    var data ="";   
                    var title= result.title;      #获取图书名(这里先只获取图书名和简介,其他的内容获取方式基本一致)
                    var summary=result.summary;    #获取图书简介
                    data=title+summary             
                    $("#get").html(data);                #将获取到的图书名和 简介渲染到html对应的id为get的地方
            },
             error: function(error, data, type){
               alert(data + ": " + type + "."); //type isn't giving any response.
             }    
            });
}

结果展示:


相关文章

网友评论

      本文标题:EX07——API调用练习

      本文链接:https://www.haomeiwen.com/subject/ruvpuftx.html