您的位置:首页 > 编程语言 > C#

豆瓣API获取书籍详细信息

2017-01-08 17:28 495 查看
       当我们需要使用书籍详细信息时,如向数据库中录入书籍的信息,如果通过人工输入的方式不仅会十分的繁琐,而且容易出错。豆瓣提供了相关API,可以直接通过书籍的ISBN码,获取该书籍的详细信息。

程序下载(C#代码):点击打开链接

程序下载(Java代码):点击打开链接

       下面以C#为例介绍如何通过豆瓣API获取书籍的详细信息。

       豆瓣API:https://api.douban.com/v2/book/isbn/

       程序运行截图如下所下,只展示了书籍的部分信息。大家可以根据自己的需要,从获取的json数据中解析出需要的书籍信息。



1. 通过Http Get请求从豆瓣获取书籍json数据。

//HTTP的GET请求,获取书籍详细信息
private static string doGet(string url, string charset)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "text/html;charset=UTF-8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response != null)
{
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, System.Text.Encoding.GetEncoding(charset));
string retString = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return retString;
}
throw new Exception();
}2. 对获取到的json数据进行解析:
(1)根据自己的需要创建一个类,用于保存解析的结果

//豆瓣API返回的信息很多,可以根据自己的需要重新定义该类
public class BookInfo
{
//标题
public string title { get; set; }
//作者
public string[] author { get; set; }
//出版社
public string publisher { get; set; }
//封面图片的url
public string image { get; set; }
//isbn10
public string isbn10 { get; set; }
//isbn13
public string isbn13 { get; set; }
//出版日期
public string pubdate { get; set; }
//概述
public string summary { get; set; }
//页数
public string pages { get; set; }
//价格
public string price { get; set; }
//获取失败的返回信息
public string msg { get; set; }
public string code { get; set; }
}(2)解析函数
//Json解析
private static BookInfo toMap(string jsonString)
{
//实例化JavaScriptSerializer类的新实例
JavaScriptSerializer jss = new JavaScriptSerializer();
try
{
//将指定的 JSON 字符串转换为 Dictionary<string, object> 类型的对象
return jss.Deserialize<BookInfo>(jsonString);
}
catch
{
return null;
}
}3. 根据书籍的ISBN码获取书籍详细信息
//根据ISBN码从豆瓣API获取书籍详细信息
public static bool getInfo(string isbn, out BookInfo bookInfo, out string json)
{
try
{
//豆瓣API
string uri = "https://api.douban.com/v2/book/isbn/" + isbn;
//获取书籍详细信息,Json格式
json = doGet(uri, "utf-8");
//将获取到的Json格式的文件转换为定义的类
bookInfo = toMap(json);
return true;
}
catch
{
//信息获取失败
bookInfo = null;
json = "";
return false;
}
}4. 根据url获取书籍的封面图片
//HTTP获取图片,获取书籍封面
public static Image doGetImage(string url)
{
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
if (response != null)
{
Stream stream = response.GetResponseStream();
return Image.FromStream(stream);
}
return drawCover();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息