日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

13.2.1 访问世界银行的数据

發(fā)布時(shí)間:2023/12/29 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 13.2.1 访问世界银行的数据 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

13.2.1 訪問世界銀行的數(shù)據(jù)

我們?cè)诒菊率褂玫臄?shù)據(jù)源,是由世界銀行提供的服務(wù),它是為發(fā)展中國(guó)家提供資金和知識(shí)的國(guó)際組織。作為其工作的一部分,它需要識(shí)別哪種類型的支持最有效,確定需求在哪里,評(píng)估對(duì)發(fā)展中國(guó)家的經(jīng)濟(jì),生活質(zhì)量,環(huán)境是否產(chǎn)生了影響。世界銀行有一組數(shù)據(jù),稱為世界發(fā)展指標(biāo)(World Development Indicators),包含了許多國(guó)家的信息,而且數(shù)據(jù)在線可用。在本章,我們將使用有關(guān)環(huán)境信息,更具體的森林覆蓋區(qū)域信息。由世界銀行提供的數(shù)據(jù)可免費(fèi)使用,但是,首先需要在它的網(wǎng)站上進(jìn)行注冊(cè)。

提示

要注冊(cè),先去 http://developer.worldbank.org,填寫完表格,收到確認(rèn)的電子郵件后,就可以返回網(wǎng)站,獲取 API 密鑰,用于將請(qǐng)求發(fā)送到世界銀行服務(wù)。網(wǎng)站還提供了有關(guān)服務(wù)的文檔和簡(jiǎn)明教程;你可以在那里看,但是,我們?cè)谶@一章,也會(huì)解釋所使用到的內(nèi)容。網(wǎng)頁(yè)上有一項(xiàng)重要的功能,是查詢生成器,可以交互地運(yùn)行、配置查詢,顯示的 URL 可以用于以編程方式請(qǐng)求數(shù)據(jù)。

世界銀行使用簡(jiǎn)單的基于 HTTP 的服務(wù)公開數(shù)據(jù),因此,我們可以使用早前創(chuàng)建的 downloadUrl 函數(shù)。如果你看過文檔,或者體驗(yàn)過查詢生成器一段時(shí)間,將很快學(xué)會(huì)請(qǐng)求 URL 的結(jié)構(gòu)。地址總是指向服務(wù)器上的同一頁(yè)面,所有額外屬性在 URL 中以鍵-值對(duì)的形式提供。在清單 13.5 中,我們首先創(chuàng)建一個(gè)函數(shù),來(lái)構(gòu)造請(qǐng)求 URL,鍵-值對(duì)包含在 F# 列表中,這樣,我們可以更方便地訪問數(shù)據(jù)。

清單13.5 生成請(qǐng)求 URL (F#)

open System.Weblet worldBankKey = "xxxxxxxxxx" <-- 在這里,提供世界銀行的密鑰 let worldBankUrl(functions, props) = seq { yield "http://open.worldbank.org" for item in functions do | [1]yield "/" + HttpUtility.UrlEncode(item:string) |yield "?per_page=100" yield "&api_key=" + worldBankKeyfor key, value in props do yield "&" + key + "=" + HttpUtility.UrlEncode(value:string) } [2]|> String.concat "&"

函數(shù) worldBankUrl 包含一個(gè)序列表達(dá)式,生成字符串集合,然后,再將它們連接成一個(gè) URL。
在序列表達(dá)式中,我們首先返回 URL 的基本部分。接下來(lái),添加路徑,指向由服務(wù)器提供所需的函數(shù),例如,函數(shù)可能是“/keywords/Wood”,因此,我們可以得到描述函數(shù)名各部分的列表,再把所有這些用分隔符“/”連接起來(lái)[1]。指定函數(shù)以后,再添加 API 密鑰和頁(yè)面長(zhǎng)度,這部分也是在這一章我們需要的所有請(qǐng)求所共享的。最后,處理由用戶指定的額外屬性,迭代由參數(shù)值 props 指定的所有鍵-值對(duì),返回字符串“&鍵=值” [2]。
要確保 URL 格式正確,我們使用了 System.Web 命名空間下的 HttpUtility 類。如果編譯文件,作為項(xiàng)目的一部分,需要添加對(duì) System.Web 程序集引用,因此它不是默認(rèn)引用。這個(gè)工具可以將任意字符串編碼為可以包含在 URL 中的字符串。UrlEncode 方法有不同的重載,我們使用類型注解(type annotation)指定參數(shù)值 value 的類型是字符串。
在本章,我們將創(chuàng)建 F# 腳本文件,而不是傳統(tǒng)的應(yīng)用程序,因此,下一步就是寫幾個(gè) F# 交互命令,可以立即執(zhí)行,檢查寫的函數(shù)運(yùn)行是否正確。這種“測(cè)試請(qǐng)求(test request)”對(duì)于銀行所使用的數(shù)據(jù)格式,也是非常有用,因?yàn)?#xff0c;我們知道后面要解析數(shù)據(jù)。
由世界銀行提供的統(tǒng)計(jì)數(shù)據(jù)既可用于個(gè)別國(guó)家,也可以按地區(qū)或收入分組,這些匯總統(tǒng)計(jì)更利于看到總體趨勢(shì)。我們要做的第一件事,就是獲取所有有關(guān)可用的分組信息,在網(wǎng)站上可以嘗試使用查詢生成器。首先,在 Country Calls 選項(xiàng)卡上選擇 Countries(國(guó)家),并輸入 API 密鑰。要得到按國(guó)家分組的匯總列表,從Region(區(qū)域)列表中選擇 Aggregates(匯總),然后,運(yùn)行請(qǐng)求。清單 13.6 顯示了使用 F# Interactive 運(yùn)行相同的請(qǐng)求。

清單13.6 測(cè)試世界銀行數(shù)據(jù)服務(wù) (F# Interactive)

> let url = worldBankUrl(["countries"], | [1]["region", "NA" ];; | 用指定屬性生成 URL val url : string = http://open.worldbank.org/countries?per_page=100& api_key=hq8byg8k7t2fxc6hp7jmbx26&region=NA"> Async.RunSynchronously(downloadUrl(url));; [2] <-- 下載頁(yè)面為字符串 val it : string = "<?xml version=\"1.0\" encoding=\"utf-8\" (...)"

我們首先使用剛剛實(shí)現(xiàn)的函數(shù)創(chuàng)建 URL[1],把 countries 作為我們想要調(diào)用的函數(shù)名,傳遞給它;另一個(gè)參數(shù) region 指定我們想要列舉的國(guó)家類型,NA 值表示我們對(duì)匯總的國(guó)家信息感興趣。因?yàn)槲覀兪褂?F# Interactive,能立即看到組成的 URL,它包含了所有指定的參數(shù),世界銀行的密鑰,以及為指定每個(gè)頁(yè)面至多返回100 條記錄的標(biāo)志。后面,當(dāng)我們需要獲得更大數(shù)量的指標(biāo)時(shí),會(huì)討論分頁(yè)輸出。
有了 URL 以后,我們就可以將其復(fù)制到瀏覽器,看看世界銀行返回的數(shù)據(jù)。如果以編程方式下載頁(yè)面,可以使用 downloadUrl 函數(shù)(來(lái)自清單 13.1)。因?yàn)槭褂萌魏尉W(wǎng)絡(luò)操作,下載都可能會(huì)失敗;如果我們手工運(yùn)行請(qǐng)求,這并不重要,但是,當(dāng)我們執(zhí)行批量操作,并行從 URL 下載數(shù)據(jù)的時(shí)候,就需要代碼有從非致命故障中恢復(fù)的能力。

總結(jié)

以上是生活随笔為你收集整理的13.2.1 访问世界银行的数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。