c#使用豆瓣API

最近准备做个pivot的图书检索,所以需要从网上爬点东西,豆瓣这方面东西挺全的,而且有API,就先从豆瓣下了

虽然叫C#使用豆瓣API,其实豆瓣API主要是post和get操作,然和语言都能使用的

 

关于API,详细的看豆瓣的介绍吧:

豆瓣 API :http://www.douban.com/service/apidoc/

豆瓣 API 参考手册:http://www.douban.com/service/apidoc/reference/subject#获取书籍信息

豆瓣 API 快速入门:http://www.douban.com/service/apidoc/guide

 

由于要获取图书的信息,所以先建个图书的类吧:

1   namespace doubantest
2   {
3        class bookinfo
4       {
5            private  string _name;
6            private  string _author;
7            private  string _imageurl;
8            private  string _summary;
9            private  string _isbn;
10           private  string _pages;
11           private  string _price;
12           private  string _publisher;
13           private  string _pubdate;
14 
15           public bookinfo()
16          {
17               this._name =  string.Empty;
18               this._author =  string.Empty;
19               this._imageurl =  string.Empty;
20               this._summary =  string.Empty;
21               this._isbn =  string.Empty;
22               this._pages =  string.Empty;
23               this._price =  string.Empty;
24               this._publisher =  string.Empty;
25               this._pubdate =  string.Empty;
26          }
27 
28           public  string Name
29          {
30               get {
31                   return  this._name;
32              }
33               set {
34                   this._name =  value;
35              }
36          }
37 
38           public  string Author
39          {
40               get
41              {
42                   return  this._author;
43              }
44               set
45              {
46                   this._author =  value;
47              }
48          }
49 
50           public  string Imageurl
51          {
52               get
53              {
54                   return  this._imageurl;
55              }
56               set
57              {
58                   this._imageurl =  value;
59              }
60          }
61 
62           public  string Summary
63          {
64               get
65              {
66                   return  this._summary;
67              }
68               set
69              {
70                   this._summary =  value;
71              }
72          }
73 
74           public  string Isbn
75          {
76               get
77              {
78                   return  this._isbn;
79              }
80               set
81              {
82                   this._isbn =  value;
83              }
84          }
85 
86           public  string Pages
87          {
88               get
89              {
90                   return  this._pages;
91              }
92               set
93              {
94                   this._pages =  value;
95              }
96          }
97 
98           public  string Price
99          {
100              get
101             {
102                  return  this._price;
103             }
104              set
105             {
106                  this._price =  value;
107             }
108         }
109
110          public  string Publisher
111         {
112              get
113             {
114                  return  this._publisher;
115             }
116              set
117             {
118                  this._publisher =  value;
119             }
120         }
121
122          public  string Pubdate
123         {
124              get
125             {
126                  return  this._pubdate;
127             }
128              set
129             {
130                  this._pubdate =  value;
131             }
132         }
133
134     }
135 }

 

先添加using

1 using System.Net;
2 using System.IO;
3 using System.Xml;

 

然后就是通过API获取数据了,根据豆瓣提供的格式向服务器获取数据:

HttpWebRequest myRequest =  null;
HttpWebResponse myHttpResponse =  null;
string doubanurl =  " http://api.douban.com/book/subject/isbn/ ";
string geturl = doubanurl + textBoxisbnisbn.Text.ToString().Trim();
myRequest = (HttpWebRequest)WebRequest.Create(geturl);
myHttpResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader =  new StreamReader(myHttpResponse.GetResponseStream());
string xmldetail = reader.ReadToEnd();
reader.Close();
10 myHttpResponse.Close();

 

数据获取完毕(如果输入正确的话),获得的是xml格式,内容如下:

   < ?xml version = " 1.0 " encoding = " UTF-8 "   ? > 
< entry xmlns = " http://www.w3.org/2005/Atom " xmlns:db = " http://www.douban.com/xmlns/ " xmlns:gd = " http://schemas.google.com/g/2005 " xmlns:openSearch = " http://a9.com/-/spec/opensearchrss/1.0/ " xmlns:opensearch = " http://a9.com/-/spec/opensearchrss/1.0/ " >
   < id >http://api.douban.com/book/subject/4744120 < /id > 
   < title >FLUENT流体分析及仿真实用教程(附光盘) < /title > 
   < category scheme = " http://www.douban.com/2007#kind " term = " http://www.douban.com/2007#book "   / > 
< author >
   < name >朱红钧 < /name > 
   < /author >
   < link href = " http://api.douban.com/book/subject/4744120 " rel = " self "   / > 
10    < link href = " http://book.douban.com/subject/4744120/ " rel = " alternate "   / > 
11    < link href = " http://img3.douban.com/pics/book-default-small.gif " rel = " image "   / > 
12    < summary >FLUENT是CFD软件中相对成熟和运用最为广泛的商业软件。本书以FLUENT 6.3.26版本为蓝本,由浅入深、循序渐进地介绍了利用FLUENT进行流体分析与仿真的各部分知识,包括前处理网格生成、湍流模型、传热分析、非定常流动问题、多相流模型、转动模型、组分输运与化学反应模型、流动分析后处理、UDF使用及编写等。全书通过基础知识和实例介绍相结合的方式讲解了从数值建模到计算后处理各部分操作的基本方法和步骤,最后以综合实例的方式进一步向读者介绍了典型工程问题的流体分析及仿真方法。  本书可作为水利、土木、石工、储运、航空、能源、环境、机械、建筑、海工、材料、动力、冶金等专业的研究生和本科生的计算流体力学教材,同时也可作为CFD相关领域专业技术人员的参考用书。 < /summary > 
13    < db:attribute name = " isbn10 " >7115225265 < /db:attribute > 
14    < db:attribute name = " isbn13 " >9787115225269 < /db:attribute > 
15    < db:attribute name = " title " >FLUENT流体分析及仿真实用教程(附光盘) < /db:attribute > 
16    < db:attribute name = " pages " >388 < /db:attribute > 
17    < db:attribute name = " author " >朱红钧 < /db:attribute > 
18    < db:attribute name = " price " >58.0 < /db:attribute > 
19    < db:attribute name = " publisher " >人民邮电出版社 < /db:attribute > 
20    < db:attribute name = " binding " >平装 < /db:attribute > 
21    < db:attribute name = " pubdate " >2010-4-1 < /db:attribute > 
22    < gd:rating average = " 0 " max = " 10 " min = " 0 " numRaters = " 0 "   / > 
23    < /entry >

 

下面就是从XML里获取需要的数据:

                books =  new bookinfo();

                XmlDocument xml =  new XmlDocument();
                xml.LoadXml(xmldetail);
                XmlNamespaceManager nsmgr =  new XmlNamespaceManager(xml.NameTable);
                nsmgr.AddNamespace( " db "" http://www.w3.org/2005/Atom ");
                XmlElement root = xml.DocumentElement;
                XmlNodeList nodes = root.SelectNodes( " /db:entry ", nsmgr);

10                  foreach (XmlNode nodeData  in nodes)
11                 {
12                      foreach (XmlNode childnode  in nodeData.ChildNodes)
13                     {
14                          string str = childnode.Name;
15                          switch (str)
16                         {
17                              case  " title ":
18                                 books.Name = childnode.InnerText;
19                                  break;
20                              case  " link ":
21                                  if (childnode.Attributes[ 1].Value ==  " image ")
22                                 {
23                                     books.Imageurl = childnode.Attributes[ 0].Value;
24                                 }
25                                  break;
26                              case  " summary ":
27                                 books.Summary = childnode.InnerText;
28                                  break;
29                              case  " db:attribute ":
30                                 {
31                                      switch (childnode.Attributes[ 0].Value)
32                                     {
33                                          case  " isbn13 ":
34                                             books.Isbn = childnode.InnerText;
35                                              break;
36                                          case " pages ":
37                                             books.Pages = childnode.InnerText;
38                                              break;
39                                          case  " author ":
40                                             books.Author = childnode.InnerText;
41                                              break;
42                                          case  " price ":
43                                             books.Price = childnode.InnerText;
44                                              break;
45                                          case  " publisher ":
46                                             books.Publisher = childnode.InnerText;
47                                              break;
48                                          case  " pubdate ":
49                                             books.Pubdate = childnode.InnerText;
50                                              break;
51                                     } // end   switch
52                                      break;
53                                 }
54                         } // end   switch
55                     } // end   foreach
56                 } // end   foreach
57
58                 labeltitle.Text = books.Name;
59                 labelauthor.Text = books.Author;
60                 labelimageurl.Text = books.Imageurl;
61                 labelisbn.Text = books.Isbn;
62                 labelpage.Text = books.Pages;
63                 labelprice.Text = books.Price;
64                 labelpublisher.Text = books.Publisher;
65                 labelpubdate.Text = books.Pubdate;
66                 labelsummary.Text = books.Summary;

 

最后看眼大概效果:

image

 

其实标准的api的URL应该是:

 

apikey是自己申请的

不过apikey其实没有也可以用

印象中貌似有apikey的话,没分钟允许连接40次

没有的话只能20次

超过的话会被封IP…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值