- 浏览: 465992 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
ty1972873004:
sunwang810812 写道我运行了这个例子,怎么结果是这 ...
Java并发编程: 使用Semaphore限制资源并发访问的线程数 -
lgh1992314:
simpleDean 写道请问,Logger.setLevel ...
Java内置Logger详解 -
sunwang810812:
我运行了这个例子,怎么结果是这样的:2号车泊车6号车泊车5号车 ...
Java并发编程: 使用Semaphore限制资源并发访问的线程数 -
jp260715007:
nanjiwubing123 写道参考你的用法,用如下方式实现 ...
面试题--三个线程循环打印ABC10次的几种解决方法 -
cb_0312:
SurnameDictionary文章我没看完,现在懂了
中文排序
在本篇文章中,主要是通过豆瓣API实现获取图书信息的小功能。
一. 豆瓣API能干什么?
参考链接:[url]http://www.douban.com/service/ [/url]
豆瓣API是豆瓣为第三方开发人员提供的编程接口。利用豆瓣API,你可以在你的网站或程序中使用豆瓣的数据和功能.目前的豆瓣API支持的功能包括:
二. 根据书本ISBN来获取图书信息
豆瓣API提供了根据ISBN来查询书本信息的服务,链接:
http://api.douban.com/book/subject/isbn/+ISBN。如ISBN为9787308083256,我们就可以通过链接(http://api.douban.com/book/subject/isbn/9787308083256)获取到下面的信息。
在这个返回的XML文件中,包含了书籍的诸多信息,如书本的题目,作者,内容摘要,出版日期…等等。
三. 解析XML来获取书本的详细信息
3.1写一个豆瓣的书本类
3.2写一个XML的解析类
通过ISBN查询得到的信息以XML格式的形式返回,所以写一个针对此类XML格式解析的类才能得到我们想要的具体的信息(如:标题,作者,简介等等)。
3.3最后写一个测试类
Eclipse工具中设置断点,查看得到的书本具体信息如下图所示:
控制台输出:
title:->马云的颠覆智慧
summary:->他是“教主”!是极具煽动力的“布道者”!是不走寻常路的企业家!
在阿里巴巴、淘宝一个个大放异彩的案例中,他如何以颠覆完成超越?
他自称完全不懂网络,却打造了阿里巴巴帝国,颠覆了中国互联网生态;他演讲激情澎湃,不走寻常路,成为一名孜孜不倦的布道者;他宣称在阿里巴巴,股东的地位在顾客、员工之后,股东却纷纷向他伸出橄榄枝!他如何以颠覆完成超越?
本书正是从分析马云异于常人的企业运营智慧和理念出发,用清晰地案例和深刻的分析,展现其以颠覆完成超越的独到智慧。
关于“颠覆”,马云如是说——
做任何事,必须要有突破,没有突破,就等于没做。
——马云在《赢在中国》节目中的点评
世界永远不缺创新,永远不缺的是借口。
——2010年马云在IT领袖峰会上的演讲
今时今日,一场由互联网技术掀起的革命正初露端倪,这股浪潮必将永久改变顾客与企业之间的力量态势。在世界各地,能够把握这些新契机和新趋势的中小型企业必将在竞争中脱颖而出。
——2009年马云在新加坡APEC中小企业高峰会议的演讲《因小而美》
假如没有变革,怎么会有中小企业,假如没有变革,我们这些所有垄断的企业,怎么有利益在?所以说不破不立。
——2008年马云新浪博客文章《呼唤企业家精神 坚持梦想敢于担当》
蓝海战略是一种颠覆性的思考。
——2006年马云在浙商大会暨首届浙商投资博览会上的发言
阿里巴巴进入淘宝,将会颠覆C2C、B2C等概念,而未来两到三年内,阿里巴巴与淘宝也必然走向融合,这是一个大趋势。
——2005年12月25日上海交通大学安泰管理学院演讲
price:-->35.00元
author:-->快刀洪七
ImagePath:-->http://img3.douban.com/spic/s4644461.jpg
至此,通过豆瓣提供的API,一个简单的图书信息获取小程序就完成了。
四.获取图书信息后能做什么呢?
获取书本信息之后,最简单的应用就可以为自己建立一个图书信息库,实现一个简单的Web应用。比如将得到的书籍信息存入到数据库中,然后以分页的形式将书本信息显示在页面上,最后用户可以点击某个书本,弹出一个框显示详细信息,如下图:
转载请注明出处:http://mouselearnjava.iteye.com/blog/1961777
一. 豆瓣API能干什么?
参考链接:[url]http://www.douban.com/service/ [/url]
豆瓣API是豆瓣为第三方开发人员提供的编程接口。利用豆瓣API,你可以在你的网站或程序中使用豆瓣的数据和功能.目前的豆瓣API支持的功能包括:
- 搜索并查看书籍、电影、音乐信息
- 搜索并查看用户信息,查看用户友邻信息
- 查看用户收藏
- 添加、更新、删除用户收藏
- 查看评论
- 发布、修改、删除评论
- 查看、添加、删除用户广播
- 查看、添加、删除用户日记
- 搜索并查看、添加、删除活动
- 查看、添加、删除、回复推荐
二. 根据书本ISBN来获取图书信息
豆瓣API提供了根据ISBN来查询书本信息的服务,链接:
http://api.douban.com/book/subject/isbn/+ISBN。如ISBN为9787308083256,我们就可以通过链接(http://api.douban.com/book/subject/isbn/9787308083256)获取到下面的信息。
在这个返回的XML文件中,包含了书籍的诸多信息,如书本的题目,作者,内容摘要,出版日期…等等。
三. 解析XML来获取书本的详细信息
3.1写一个豆瓣的书本类
import java.io.Serializable; public class TudouBookInfo implements Serializable { private static final long serialVersionUID = 2179631010054135058L; private String tags;//书本标签 private String isbn10;//10位ISBN private String isbn13; private String title; private String pages; private String author; private String price; private String binding; private String publisher; private String pubdate; private String summary; private String imagePath; /** * @return the imagePath */ public String getImagePath() { return imagePath; } /** * @param imagePath * the imagePath to set */ public void setImagePath(String imagePath) { this.imagePath = imagePath; } public TudouBookInfo() { } /** * @return the tags */ public String getTags() { return tags; } /** * @param tags * the tags to set */ public void setTags(String tags) { this.tags = tags; } /** * @return the isbn10 */ public String getIsbn10() { return isbn10; } /** * @param isbn10 * the isbn10 to set */ public void setIsbn10(String isbn10) { this.isbn10 = isbn10; } /** * @return the isbn13 */ public String getIsbn13() { return isbn13; } /** * @param isbn13 * the isbn13 to set */ public void setIsbn13(String isbn13) { this.isbn13 = isbn13; } /** * @return the title */ public String getTitle() { return title; } /** * @param title * the title to set */ public void setTitle(String title) { this.title = title; } /** * @return the pages */ public String getPages() { return pages; } /** * @param pages * the pages to set */ public void setPages(String pages) { this.pages = pages; } /** * @return the author */ public String getAuthor() { return author; } /** * @param author * the author to set */ public void setAuthor(String author) { this.author = author; } /** * @return the price */ public String getPrice() { return price; } /** * @param price * the price to set */ public void setPrice(String price) { this.price = price; } /** * @return the binding */ public String getBinding() { return binding; } /** * @param binding * the binding to set */ public void setBinding(String binding) { this.binding = binding; } /** * @return the publisher */ public String getPublisher() { return publisher; } /** * @param publisher * the publisher to set */ public void setPublisher(String publisher) { this.publisher = publisher; } /** * @return the pubdate */ public String getPubdate() { return pubdate; } /** * @param pubdate * the pubdate to set */ public void setPubdate(String pubdate) { this.pubdate = pubdate; } /** * @return the summary */ public String getSummary() { return summary; } /** * @param summary * the summary to set */ public void setSummary(String summary) { this.summary = summary; } }
3.2写一个XML的解析类
通过ISBN查询得到的信息以XML格式的形式返回,所以写一个针对此类XML格式解析的类才能得到我们想要的具体的信息(如:标题,作者,简介等等)。
import java.io.InputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; public class BookXMLParser extends DefaultHandler { private TudouBookInfo book = null; private final StringBuilder buff = new StringBuilder(); private String attname = null; private final List<String> tags = new ArrayList<String>(); /** * @return the book */ public TudouBookInfo getBook() { return book; } public BookXMLParser(InputStream is) { try { SAXParserFactory spfactory = SAXParserFactory.newInstance(); spfactory.setValidating(false); SAXParser saxParser = spfactory.newSAXParser(); XMLReader xmlReader = saxParser.getXMLReader(); xmlReader.setContentHandler(this); xmlReader.parse(new InputSource(is)); } catch (Exception e) { System.err.println(e); System.exit(1); } } public void startElement(String uri, String localName, String name, Attributes atts) throws SAXException { if (name.equalsIgnoreCase("entry")) { book = new TudouBookInfo(); } else if (name.equalsIgnoreCase("db:attribute")) { attname = atts.getValue("name"); } else if (name.equalsIgnoreCase("db:tag")) { tags.add(atts.getValue("name")); } else if (name.equalsIgnoreCase("link")) { if ("image".equalsIgnoreCase(atts.getValue("rel"))) { book.setImagePath(atts.getValue("href")); } } buff.setLength(0); } public void endElement(String uri, String localName, String name) throws SAXException { if ("entry".equalsIgnoreCase(name)) { StringBuilder str = new StringBuilder(); for (String t : tags) { str.append(t + "/"); } book.setTags(str.toString()); } else if (name.equalsIgnoreCase("db:attribute")) { String value = buff.toString().trim(); if ("isbn10".equalsIgnoreCase(attname)) { book.setIsbn10(value); } else if ("isbn13".equalsIgnoreCase(attname)) { book.setIsbn13(value); } else if ("title".equalsIgnoreCase(attname)) { book.setTitle(value); } else if ("pages".equalsIgnoreCase(attname)) { book.setPages(value); } else if ("author".equalsIgnoreCase(attname)) { book.setAuthor(value); } else if ("price".equalsIgnoreCase(attname)) { book.setPrice(value); } else if ("publisher".equalsIgnoreCase(attname)) { book.setPublisher(value); } else if ("binding".equalsIgnoreCase(attname)) { book.setBinding(value); } else if ("pubdate".equalsIgnoreCase(attname)) { book.setPubdate(value); } } else if ("summary".equalsIgnoreCase(name)) { book.setSummary(buff.toString()); } buff.setLength(0); } public void characters(char ch[], int start, int length) throws SAXException { buff.append(ch, start, length); } }
3.3最后写一个测试类
import java.io.IOException; import java.io.InputStream; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; public class RetrieveDocumentByURL { public RetrieveDocumentByURL(String url) throws ClientProtocolException, IOException{ DefaultHttpClient client = new DefaultHttpClient(); HttpGet get = new HttpGet(url); HttpResponse response = client.execute(get); HttpEntity entity = response.getEntity(); InputStream is = entity.getContent(); TudouBookInfo book = new BookXMLParser(is).getBook(); System.out.println("title:->" + book.getTitle()); System.out.println("summary:->"+ book.getSummary()); System.out.println("price:-->" + book.getPrice()); System.out.println("author:-->" + book.getAuthor()); System.out.println("ImagePath:-->" + book.getImagePath()); } public static void main(String[] args) throws ClientProtocolException, IOException { new RetrieveDocumentByURL("http://api.douban.com/book/subject/isbn/9787308083256"); } }
Eclipse工具中设置断点,查看得到的书本具体信息如下图所示:
控制台输出:
title:->马云的颠覆智慧
summary:->他是“教主”!是极具煽动力的“布道者”!是不走寻常路的企业家!
在阿里巴巴、淘宝一个个大放异彩的案例中,他如何以颠覆完成超越?
他自称完全不懂网络,却打造了阿里巴巴帝国,颠覆了中国互联网生态;他演讲激情澎湃,不走寻常路,成为一名孜孜不倦的布道者;他宣称在阿里巴巴,股东的地位在顾客、员工之后,股东却纷纷向他伸出橄榄枝!他如何以颠覆完成超越?
本书正是从分析马云异于常人的企业运营智慧和理念出发,用清晰地案例和深刻的分析,展现其以颠覆完成超越的独到智慧。
关于“颠覆”,马云如是说——
做任何事,必须要有突破,没有突破,就等于没做。
——马云在《赢在中国》节目中的点评
世界永远不缺创新,永远不缺的是借口。
——2010年马云在IT领袖峰会上的演讲
今时今日,一场由互联网技术掀起的革命正初露端倪,这股浪潮必将永久改变顾客与企业之间的力量态势。在世界各地,能够把握这些新契机和新趋势的中小型企业必将在竞争中脱颖而出。
——2009年马云在新加坡APEC中小企业高峰会议的演讲《因小而美》
假如没有变革,怎么会有中小企业,假如没有变革,我们这些所有垄断的企业,怎么有利益在?所以说不破不立。
——2008年马云新浪博客文章《呼唤企业家精神 坚持梦想敢于担当》
蓝海战略是一种颠覆性的思考。
——2006年马云在浙商大会暨首届浙商投资博览会上的发言
阿里巴巴进入淘宝,将会颠覆C2C、B2C等概念,而未来两到三年内,阿里巴巴与淘宝也必然走向融合,这是一个大趋势。
——2005年12月25日上海交通大学安泰管理学院演讲
price:-->35.00元
author:-->快刀洪七
ImagePath:-->http://img3.douban.com/spic/s4644461.jpg
至此,通过豆瓣提供的API,一个简单的图书信息获取小程序就完成了。
四.获取图书信息后能做什么呢?
获取书本信息之后,最简单的应用就可以为自己建立一个图书信息库,实现一个简单的Web应用。比如将得到的书籍信息存入到数据库中,然后以分页的形式将书本信息显示在页面上,最后用户可以点击某个书本,弹出一个框显示详细信息,如下图:
转载请注明出处:http://mouselearnjava.iteye.com/blog/1961777
发表评论
-
工厂类中移除if/else语句
2016-07-10 19:52 900面向对象语言的一个强大的特性是多态,它可以用来在代码中移除 ... -
Java编程练手100题
2014-12-11 17:13 6728本文给出100道Java编程练手的程序。 列表如下: 面 ... -
数组复制的三种方法
2014-11-30 12:57 2212本文将给出三种实现数组复制的方法 (以复制整数数组为例)。 ... -
数组复制的三种方法
2014-11-30 12:54 0本文将给出三种实现数组复制的方法 (以复制整数数组为例)。 ... -
四种复制文件的方法
2014-11-29 13:21 1739尽管Java提供了一个类ava.io.File用于文件的操 ... -
判断一个字符串中的字符是否都只出现一次
2014-11-25 12:58 2724本篇博文将给大家带来几个判断一个字符串中的字符是否都只出现一 ... -
使用正则表达式判断一个数是否为素数
2014-11-23 13:35 2166正则表达式能够用于判断一个数是否为素数,这个以前完全没有想过 ... -
几个可以用英文单词表达的正则表达式
2014-11-21 13:12 3748本文,我们将来看一下几个可以用英文单词表达的正则表达式。这些 ... -
(广度优先搜索)打印所有可能的括号组合
2014-11-20 11:58 1953问题:给定一个正整n,作为括号的对数,输出所有括号可能 ... -
随机产生由特殊字符,大小写字母以及数字组成的字符串,且每种字符都至少出现一次
2014-11-19 14:48 3976题目:随机产生字符串,字符串中的字符只能由特殊字符 (! ... -
找出1到n缺失的一个数
2014-11-18 12:57 3173题目:Problem description: You h ... -
EnumSet的几个例子
2014-11-14 16:24 8749EnumSet 是一个与枚举类型一起使用的专用 Set 实现 ... -
给定两个有序数组和一个指定的sum值,从两个数组中各找一个数使得这两个数的和与指定的sum值相差最小
2014-11-12 11:24 3327题目:给定两个有序数组和一个指定的sum值,从两个数组 ... -
Java面试编程题练手
2014-11-04 22:49 6700面试编程 写一个程序,去除有序数组中的重复数字 编 ... -
Collections用法整理
2014-10-22 20:55 9846Collections (java.util.Collect ... -
The Code Sample 代码实例 个人博客开通
2014-09-04 18:48 1418个人博客小站开通 http://thecodesample. ... -
Collections.emptyXXX方法
2014-06-08 13:37 2145从JDK 1.5开始, Collections集合工具类中预先 ... -
这代码怎么就打印出"hello world"了呢?
2014-06-08 00:37 7396for (long l = 4946144450195624L ... -
最短时间过桥
2014-04-21 22:03 4137本文用代码实现最短时间过桥,并且打印如下两个例子的最小过桥时间 ... -
将数组分割成差值最小的子集
2014-04-20 22:34 2899本文使用位掩码实现一个功能 ==》将数组分割成差值最小的子集 ...
相关推荐
学习这些内容可以帮助你更好地理解和实践使用豆瓣API获取书籍信息的方法。在实际应用中,你可能需要考虑如何处理API调用频率限制、错误处理以及数据的缓存等问题,以确保程序的稳定性和效率。 总之,通过豆瓣API...
豆瓣API是豆瓣网提供的一套服务,让开发者可以获取到豆瓣平台上的各种数据,如书籍、电影、音乐等的信息。本项目重点是利用豆瓣API来获取书籍的详细信息,通过输入ISBN(国际标准书号)来实现这一功能,而开发语言...
总的来说,通过豆瓣API获取书籍详细信息的过程涉及了HTTP请求、API调用、JSON解析等多个IT领域的知识点,是Web开发中常见的一种数据获取方式。对于Java开发者来说,理解这些概念和技术是非常重要的。
资源主要是结合博客文章:http://blog.csdn.net/eastmount/article/details/24850315主要讲述使用C# 系统应用之通过豆瓣API获取书籍信息,实现的方法是通过HTTP发送获取XML信息,再读取其标签实现获取信息及书籍封面...
在实际应用中,我们通常会结合PHP和HTML来生成动态页面,将从API获取的图书数据填充到HTML模板中,展示给用户。 总的来说,这个项目涉及到了PHP的基础语法、HTTP请求、JSON处理、OAuth认证以及模板引擎的使用。对于...
调用豆瓣API抓取图书信息的php源码,调用豆瓣网站的部分源码,主要利用了豆瓣的API来获取书籍的名称、作者、封面等资料,值得借鉴!非常有帮助的源码类~
当用户完成扫描后,ZXing会返回识别到的ISBN码,然后应用通过异步任务或者Android的Retrofit库发起网络请求,调用豆瓣API获取书籍信息。与此同时,Jsoup会在后台解析返回的HTML内容,提取出图书的各种属性。最后,将...
豆瓣API是豆瓣平台提供的一种服务,允许开发者通过编程方式获取豆瓣网站上的各种数据,如电影、书籍、音乐等资源的信息,用户评论,评分等。这篇内容将深入探讨豆瓣API的测试及其重要性。 首先,我们来理解什么是...
豆瓣API,全称为Douban API,是豆瓣网对外开放的一系列接口,允许开发者通过这些接口获取到豆瓣平台上的各种数据,如图书、电影、音乐等资源的信息,以便进行二次开发和创新应用。在这个基于豆瓣API的Android实践...
例如,`getBookById(String id)`方法可以用来获取指定ID的书籍信息。 5. **错误处理**:当API请求失败时,Java豆瓣网API会提供适当的错误处理机制,可能包括异常类和错误代码,帮助开发者快速定位并解决问题。 6. ...
豆瓣API提供了包括但不限于书籍、电影、音乐等多方面的信息获取和操作功能。在这个Java SDK中,包含了OAuth2.0授权协议的支持,使得安全地访问用户数据变得更加便捷。 OAuth2.0是一种广泛使用的授权框架,它允许第...
1. **豆瓣API介绍**: 豆瓣API(Application Programming Interface)是豆瓣提供给开发者用于获取和操作豆瓣数据的接口。它允许开发者通过HTTP请求获取书籍、电影、音乐等信息,用户评论,小组话题等内容。 2. **...
总的来说,"一个基于豆瓣API的书架借阅平台"是一个集成了Vue2、Element UI和ES2015技术的项目,它利用豆瓣API获取书籍数据,构建了一个用户友好的在线书架管理平台。开发者可以通过学习这个项目,深入理解如何运用...
这涉及到对豆瓣API的"书籍"接口的调用,如获取用户个人信息、书籍详情和评论列表。开发者需要解析返回的JSON数据,将评论内容、评分、时间等信息展示在UI上,同时可能还需要处理分页加载,以便用户可以浏览更多的...
在豆瓣图书搜索项目中,vue-resource.js被用来发送请求到豆瓣API,获取图书信息。尽管现在豆瓣API不再支持直接调用,但学习如何配置和使用网络请求插件仍然是非常必要的,因为这是前端开发者必备的技能,可以应用到...
豆瓣API提供了丰富的数据接口,包括电影、图书、音乐等资源的信息,允许开发者构建与豆瓣平台互动的应用。博主Jykenan在文章中分享了他的开发经验,涵盖了从获取API密钥到实际开发过程中的各种细节。 【标签】:...
豆瓣API是豆瓣网提供的开放接口,允许开发者通过HTTP请求获取豆瓣平台上的各种信息,如电影、书籍、音乐等数据。通常,开发者需要先在豆瓣开发者平台上注册并申请API密钥,才能合法地调用这些接口。 3. **调用API...
在Android应用中,ZXing用于扫描和解析条形码或二维码,从而获取图书的ISBN码或者其他相关信息。通过集成ZXing的Android端组件,开发者可以在应用内集成扫描功能,让用户通过摄像头拍摄书籍封面的二维码,快速获取...
3. **豆瓣API**: 豆瓣API提供了获取书籍信息、用户评论、评分等数据的功能。开发者需要注册获得API密钥,然后在Android应用中通过HTTP请求调用这些接口,获取并展示图书详情。在实际使用中,需要注意API的调用频率...