這篇文章主要是講述如何通過豆瓣api擷取書籍的資訊,起初看到這個内容我最初的想法是在""中通過httpwebresponse類下載下傳源碼,再通過正規表達式分析擷取結點标簽得到資訊.但後來發現可以通過提供的程式設計接口實作.
該文章僅是基礎性c#網絡程式設計文章,嘗試測試了下豆瓣api,并沒什麼高深的内容.但希望對大家有所幫助,僅供學習.
(警告:文章僅供參考,提供一種想法,否則通路多次-10次被403 forbidden莫怪.建議認證使用豆瓣api)
在開發之前你需要申請建立一個應用,進而擷取一個新的api key(唯一辨別你的connect站點和api使用者).
正如豆瓣api快速入門()中例子:這個示例中展示了使用api獲得id為1220562的書的資訊, 請求的url如下(注意将{yourapikey}替換為你的api
key).
http://api.douban.com/book/subject/1220562?apikey={yourkeyapi}
傳回的xml文檔如下所示:
此時,我需要做的就是通過輸入的url擷取傳回的xml中的資料,通過httpwebrequest和httpwebresponse擷取http請求和應答,并解析xml中的資訊(較難).後來我才發現如果想試驗下api,豆瓣是允許在不申請api key情況下進行api調用(每分鐘請求不超過10次).也就是說我在程式中輸入網址如下即可傳回xml.
http://api.douban.com/book/subject/1220562
1.添加命名空間
2.添加按鈕點選事件
3.自定義函數擷取書籍資訊
4.運作結果如下
源網址中的書籍資訊介紹如下圖所示:
由上圖可以發現我輸入的網址沒有包含api key也能擷取,但我在測試時總是使用的.然後同時我也遇到了一些問題:
1.豆瓣api擷取書籍資訊接口,需要傳subjectid或isbnid(國際标準書号),但我想實作的是隻知道書名,就能擷取書籍的資訊,而不是僅僅傳入一串url,這些分析都讓程式内容實作,這是接下來需要做的.
2.在使用webclient和downloadfile(string address,string filename)下載下傳圖檔時,當擷取第二張圖檔總會提示錯誤"webclient請求期間發生異常",不知道為啥,但不想使用stream或并發擷取圖檔,僅想知道這是為啥?
3.這僅僅是一篇基礎性的介紹使用豆瓣api的文章,目前豆瓣針對已經授權使用者(開發api采用oauth協定進行鑒權)可以實作很多功能,後面如果有時間可以寫些“檢視使用者資訊、使用者友鄰資訊、增删改查使用者收藏、檢視評論”的文章.
最後希望該文章對大家有所幫助,如果文章中有錯誤或不足之處,還請海涵.同時文章也參考了一些資料,感謝這些作者.
(by:eastmount 2014-5-2 下午3點 原創:)
參考資料:
1.豆瓣api快速入門
2.c#使用豆瓣api-sun8134
這裡非常感謝該文章,在解析xml中我使用selectsinglenodes方法失敗後,參考了他的方法,也推薦大家去閱讀
3.豆瓣用戶端-zh19900207 該文章僅有界面,但也是我想實作的功能描述
4.xmlnode.selectnodes 方法