java豆瓣查书api_如何通过豆瓣API获取图书和电影列表
一直在豆瓣上收藏看过的书和电影(其他功能基本没用过),准备做个页面可以同步显示豆瓣上收藏的所有图书和电影,这个功能可以通过豆瓣提供的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获取图书和电影列表相关推荐
- C# 通过豆瓣网络编程API获取图书信息
这篇文章主要是关于如何通过豆瓣API获取信息的书籍,起初,我看到了原来的想法的内容是"C# 网络编程之网页简单下载实现"中通过HttpWebResponse类下载源代码,再通过正則 ...
- python爬取豆瓣图书top250_「豆瓣读书250」爬取豆瓣TOP250书单 - seo实验室
豆瓣读书250 小白学习爬虫 爬取豆瓣TOP250的书,正好本人也喜欢看书 思路分析: https://book.douban.com/top250这是TOP250第一页的链接 https://boo ...
- python 爬取豆瓣某一主题书单_Python爬虫 || 使用requests和xpath爬取豆瓣Top250书单内容全解。...
昨天,我们了解了如何爬取豆瓣某一个电影固定的位置信息,包含电影名称.导演.演员及评分等,今天我们来了解一下如何爬取豆瓣Top250书单,并如何将爬取到的内容存放到本地. 废话不多说了,shou my ...
- java 网络爬虫(以爬取豆瓣为例)
文章目录 一. 设计思路 二. 功能概述 三.运行状态图 四.代码设计 1.设计一个类负责任意一个豆瓣电影详情网页的爬取. 2.设计一个类爬取 [豆瓣电影 Top 250](https://movie ...
- 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. ...
- 零基础学习java,这些书一定要看!
学习java技术除了看视频,看书也是非常重要的,尤其是零基础同学,本文包含学习Java各个阶段的书籍推荐,史上最全,学习Java,没有书籍怎么行,就好比出征没带兵器一个道理,这些书籍整理出来给大家作为 ...
- 通过豆瓣Api,输入ISBN获取图书信息
在本篇文章中,主要是通过豆瓣API实现获取图书信息的小功能. 一. 豆瓣API能干什么? 参考链接:[url]http://www.douban.com/service/ [/url] 豆瓣API ...
- java初学者的书中收获
Java初学者的书中收获 搜索关于java老师的记忆碎片,第一节课的记忆······其实java比c语言简单许多,也许老师的这句话是对的.可是作为一个初学者,感觉自己因为付出的时间没有在学c语言的时候 ...
- Java编程哪些书值得推荐及计算机语言java中得List[图]
一.Java编程哪些书值得推荐? 书籍是人类进步的阶梯,在互联网不算发达的十年前(特指09年之前),学编程是要靠各种编程相关的书滴,大部分时间都必须沉迷于图书馆才能学好.现如今不同了,在线教育满天飞的 ...
最新文章
- 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图
- 打开PDF文件弹出阅读未加标签文档的解决方法
- 在EditText里插入图片,基于图库选择之后
- Java数据结构和算法(五)——队列
- 神策数据荣膺 2017 企业创新典范、最佳青年榜样双殊荣
- 洛谷 [SDOI2009]晨跑
- arcgis批量按掩膜提取栅格
- java 容易犯错_Java中容易犯错的题
- centos 添加路由命令_详解CentOS 6.4 添加永久静态路由所有方法汇总
- matlab 矩阵中的矩阵的特征值,当矩阵的所有条目都是变量时,如何在matlab中找出矩阵的特征值?...
- Codeforces 988D Points and Powers of Two 【性质】【卡常】
- Android中如何Hook住JNI方法
- 持久层框架的比较Hibernate与 MyBatis
- WebRTC实时通信系列教程7 使用Socket.IO搭建信令服务器交换信息
- cobbler自动部署装机
- 普惠微光汇聚暖阳,招联携手奋斗者筑梦前行
- 腾讯守护者 向网络黑产说不!
- 基于工业树莓派的AGV机器小车控制系统
- 那些会讲ppt的技术人有多爽?演讲的6个步骤
- 分析IBM JVM上的heap dump 文件phd格式