天天看點

C# 網絡程式設計之通過豆瓣API擷取書籍資訊(一)

這篇文章主要是講述如何通過豆瓣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.運作結果如下

C# 網絡程式設計之通過豆瓣API擷取書籍資訊(一)

源網址中的書籍資訊介紹如下圖所示:

C# 網絡程式設計之通過豆瓣API擷取書籍資訊(一)

由上圖可以發現我輸入的網址沒有包含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 方法

繼續閱讀