豆瓣API获取书籍详细信息

来源:互联网 发布:中日友好 知乎 编辑:程序博客网 时间:2024/05/18 03:04

       当我们需要使用书籍详细信息时,如向数据库中录入书籍的信息,如果通过人工输入的方式不仅会十分的繁琐,而且容易出错。豆瓣提供了相关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();}

0 0
原创粉丝点击