一直在豆瓣上收藏看过的书和电影(其他功能基本没用过),准备做个页面可以同步显示豆瓣上收藏的所有图书和电影,这个功能可以通过豆瓣提供的API来实现,并不复杂,我只是做了简单的封装,需要的可以直接拿去用,有问题可以直接留言,运行后的效果看这里 Books 或这里 我的豆瓣 ,因为豆瓣限制一分钟内访问次数不能超过40次,所以如果多人同时访问前面的链接可能看不到效果,再传个截图上来:

几点说明:

1.登录豆瓣后,可以去 这里 申请豆瓣APIKey。(不使用API Key时每分钟请求不能超过10次;使用API Key时,对访问的限制较为宽松,为每分钟40次)

2.豆瓣API每次调用 最多返回50个结果 ,如果你豆瓣上的书和电影超过50个,就要多次发起调用,这部分功能我的程序里已经自动处理了。

3.我封装的这段脚本提供了一些可选配置如下,参数的含义都比较明确,这里就不解释了(place是一个div的ID,可以用来做定位)。

defaults:{

place:"douban",

user:"",

api:"",

book:[{stus:"reading",maxnum:20},{stus:"read",maxnum:500},{stus:"wish",maxnum:100}],

movie:[{stus:"watched",maxnum:500},{stus:"wish",maxnum:200}],

bookreadingtitle:"正读...",

bookreadtitle:"读过...",

bookwishtitle:"想读...",

moviewatchedtitle:"看过...",

moviewishtitle:"想看..."

}

4.在你的网页里参考下面代码增加引用和调用,就可以实现类似这个页面的效果。

豆瓣列表

.douban-title {

padding: 10px 10px 0px 0px;

text-shadow: 0 1px 0 white,1px 2px 2px #AAA;

font-weight: bold;

font-size:24px;

}

.douban-list a {

padding: 10px 10px 10px 0px;

}

var _defaults = {

user:"justin79", //这里换成你的豆瓣ID

api:"" //这里换成你的豆瓣APIKEY

}

dbapi.show(_defaults);

整个javascript代码如下:

//批量读取豆瓣的图书和电影

//by justin 20120316

//http://fejustin.com

//--dbapi.begin--

var $ = jQuery;

var dbapi = {

appendScript:function(url){

if ((url)&&(url.length > 0))

$("").attr("src",url).attr("charset","utf-8").appendTo($("head")[0]);

},

/**

* 解析json数据为数组

*/

parseJSON:function(json){

var items=[];

$.each(json.entry,function(i,item){

var link = {};

link.title = item["db:subject"]["title"]["$t"];

link.link = item["db:subject"]["link"][1]["@href"];//硬编码

link.src = item["db:subject"]["link"][2]["@href"];//硬编码

items.push(link);

});

return items;

},

render:function(items){

var html='';

$.each(items,function(i,item){

html+=' +item.link+'" target="_blank">';

});

return html;

},

/**

* todo: bookurl 和 movieurl 可以合并简化

*/

bookurl:function(stus,begin,end){

return this.allurl("book",stus,begin,end);

},

movieurl:function(stus,begin,end){

return this.allurl("movie",stus,begin,end);

},

allurl:function (typ,stus,begin,end) {

if (end ===0) return;

if(!dbapi[typ + stus +"_SHOW"]){

dbapi[typ + stus +"_SHOW"] = function (json) {

var mainplace = $("#"+this.opts.place);

if (mainplace.length ===0){

mainplace = $("

}

if ($("#"+typ+stus).length === 0){

var title = this.defaults[typ+stus+"title"]?this.defaults[typ+stus+"title"]:

">>>"+typ.toUpperCase() +"-"+stus.toUpperCase()+">>>";

$("").addClass("douban-title").text(title).appendTo(mainplace);

$("

}

$("#"+typ+stus).append(this.render(this.parseJSON(json)));

}

}

return this.apiurl(typ,this.opts.user,this.opts.api,stus,begin,end);

},

apiurl:function(typ,user,key,stus,begin,end){

var url = "http://api.douban.com/people/"+user+"/collection?cat="+typ+"&start-index="+

begin+"&max-results="+end+"&status="+stus+"&alt=xd&callback=dbapi."+typ+stus+"_SHOW";

if (key.length > 0)

url += "&apikey="+key;

return url;

},

/**

* 将num按50分段生成数组集合

* @param {[type]} num 显示项目的个数

* @return {[type]} 按50分段的数组

*/

fixNum:function(num){

var len = num;

var index = 1;

var fixnums=[];

if (50>len> 0){

fixnums.push({begin:index,end:len})

}else{

while (len > 0) {

fixnums.push({begin:index,end:index+49})

len -= 50;

index +=50;

};

}

return fixnums;

},

/**

* 根据配置项显示豆瓣的图书和电影

* @param {[Object]} options [可选配置项]

*/

show:function(options){

this.opts = $.extend({}, this.defaults, options);

var books = [];

var movies = [];

$.each(this.opts.book,function (i,item) {

books.push({stus:item.stus,indexs:dbapi.fixNum(item.maxnum)});

});

$.each(this.opts.movie,function (i,item) {

movies.push({stus:item.stus,indexs:dbapi.fixNum(item.maxnum)});

});

$.each(books,function(i,item){

$.each(item.indexs,function(t,idx){

setTimeout(dbapi.appendScript(dbapi.bookurl(item.stus,idx.begin,idx.end)),300);

});

});

$.each(movies,function(i,item){

$.each(item.indexs,function(t,idx){

setTimeout(dbapi.appendScript(dbapi.movieurl(item.stus,idx.begin,idx.end)),1000);

});

});

},

/**

* 可选配置项

* @type {Object}

* todo:可以进一步把book和movie合并到一起,通过类型区分。

*/

defaults:{

place:"douban",

user:"",

api:"",

book:[{stus:"reading",maxnum:20},{stus:"read",maxnum:500},{stus:"wish",maxnum:100}],

movie:[{stus:"watched",maxnum:500},{stus:"wish",maxnum:200}],

bookreadingtitle:"正读...",

bookreadtitle:"读过...",

bookwishtitle:"想读...",

moviewatchedtitle:"看过...",

moviewishtitle:"想看..."

}

}

//--dbapi.end--

本文地址:http://www.cnblogs.com/justinw/archive/2012/03/16/doubanapi.html

java豆瓣查书api_如何通过豆瓣API获取图书和电影列表相关推荐

  1. C# 通过豆瓣网络编程API获取图书信息

    这篇文章主要是关于如何通过豆瓣API获取信息的书籍,起初,我看到了原来的想法的内容是"C# 网络编程之网页简单下载实现"中通过HttpWebResponse类下载源代码,再通过正則 ...

  2. python爬取豆瓣图书top250_「豆瓣读书250」爬取豆瓣TOP250书单 - seo实验室

    豆瓣读书250 小白学习爬虫 爬取豆瓣TOP250的书,正好本人也喜欢看书 思路分析: https://book.douban.com/top250这是TOP250第一页的链接 https://boo ...

  3. python 爬取豆瓣某一主题书单_Python爬虫 || 使用requests和xpath爬取豆瓣Top250书单内容全解。...

    昨天,我们了解了如何爬取豆瓣某一个电影固定的位置信息,包含电影名称.导演.演员及评分等,今天我们来了解一下如何爬取豆瓣Top250书单,并如何将爬取到的内容存放到本地. 废话不多说了,shou my ...

  4. java 网络爬虫(以爬取豆瓣为例)

    文章目录 一. 设计思路 二. 功能概述 三.运行状态图 四.代码设计 1.设计一个类负责任意一个豆瓣电影详情网页的爬取. 2.设计一个类爬取 [豆瓣电影 Top 250](https://movie ...

  5. Python手记-10:Beautiful Soup爬取豆瓣经典书单

    目录 1. Beautiful Soup简介 2.  Beautiful Soup简单使用 2.1 对象种类 2.2 遍历文档树 2.2.1 子节点 2.2.2 父节点 2.2.3 兄弟节点 2.2. ...

  6. 零基础学习java,这些书一定要看!

    学习java技术除了看视频,看书也是非常重要的,尤其是零基础同学,本文包含学习Java各个阶段的书籍推荐,史上最全,学习Java,没有书籍怎么行,就好比出征没带兵器一个道理,这些书籍整理出来给大家作为 ...

  7. 通过豆瓣Api,输入ISBN获取图书信息

    在本篇文章中,主要是通过豆瓣API实现获取图书信息的小功能. 一. 豆瓣API能干什么?   参考链接:[url]http://www.douban.com/service/ [/url] 豆瓣API ...

  8. java初学者的书中收获

    Java初学者的书中收获 搜索关于java老师的记忆碎片,第一节课的记忆······其实java比c语言简单许多,也许老师的这句话是对的.可是作为一个初学者,感觉自己因为付出的时间没有在学c语言的时候 ...

  9. Java编程哪些书值得推荐及计算机语言java中得List[图]

    一.Java编程哪些书值得推荐? 书籍是人类进步的阶梯,在互联网不算发达的十年前(特指09年之前),学编程是要靠各种编程相关的书滴,大部分时间都必须沉迷于图书馆才能学好.现如今不同了,在线教育满天飞的 ...

最新文章

  1. 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图
  2. 打开PDF文件弹出阅读未加标签文档的解决方法
  3. 在EditText里插入图片,基于图库选择之后
  4. Java数据结构和算法(五)——队列
  5. 神策数据荣膺 2017 企业创新典范、最佳青年榜样双殊荣
  6. 洛谷 [SDOI2009]晨跑
  7. arcgis批量按掩膜提取栅格
  8. java 容易犯错_Java中容易犯错的题
  9. centos 添加路由命令_详解CentOS 6.4 添加永久静态路由所有方法汇总
  10. matlab 矩阵中的矩阵的特征值,当矩阵的所有条目都是变量时,如何在matlab中找出矩阵的特征值?...
  11. Codeforces 988D Points and Powers of Two 【性质】【卡常】
  12. Android中如何Hook住JNI方法
  13. 持久层框架的比较Hibernate与 MyBatis
  14. WebRTC实时通信系列教程7 使用Socket.IO搭建信令服务器交换信息
  15. cobbler自动部署装机
  16. 普惠微光汇聚暖阳,招联携手奋斗者筑梦前行
  17. 腾讯守护者 向网络黑产说不!
  18. 基于工业树莓派的AGV机器小车控制系统
  19. 那些会讲ppt的技术人有多爽?演讲的6个步骤
  20. 分析IBM JVM上的heap dump 文件phd格式

热门文章

  1. 飞浆论文复现:用于图像到图像翻译的具有自适应层实例化的非监督的生成对抗网络
  2. OpenCV开发笔记(四十六):红胖子8分钟带你深入了解仿射变化(图文并茂+浅显易懂+程序源码)
  3. 美国程序员薪水按编程语言大比拼新浪
  4. 2021 ICPC 银川打铜记
  5. 关于如何在空间中建立直角坐标系
  6. 二、VSCODE 环境搭建
  7. C++的异常[转载]
  8. 实现短信验证码有效时间
  9. 数据库设计三大范式原则
  10. 太原学院计算机科学与技术在哪个校区,太原学院有几个校区及校区地址