API是獲得Web數(shù)據(jù)的重要途徑之一缤骨。想不想了解如何用R調(diào)用API,提取和整理你需要的免費(fèi)Web數(shù)據(jù)呢尺借?本文一步步為你詳盡展示操作流程绊起。
權(quán)衡
俗話說(shuō)“巧婦難為無(wú)米之炊”。即便你已經(jīng)掌握了數(shù)據(jù)分析的十八般武藝燎斩,沒(méi)有數(shù)據(jù)也是苦惱的事情虱歪。“拔劍四顧心茫然”說(shuō)的大概就是這種情境吧栅表。
數(shù)據(jù)的來(lái)源有很多笋鄙。Web數(shù)據(jù)是其中數(shù)量龐大,且相對(duì)容易獲得的類型怪瓶。更妙的是萧落,許多的Web數(shù)據(jù),都是免費(fèi)的洗贰。
在這個(gè)號(hào)稱大數(shù)據(jù)的時(shí)代找岖,你是如何獲得Web數(shù)據(jù)的呢?
許多人會(huì)使用那些別人整理好并且發(fā)布的數(shù)據(jù)集敛滋。
他們很幸運(yùn)许布,工作可以建立在別人的基礎(chǔ)上。這樣效率最高矛缨。
但是不見(jiàn)得每個(gè)人都有這樣的幸運(yùn)爹脾。如果你需要用到的數(shù)據(jù),偏巧沒(méi)有人整理和發(fā)布過(guò)箕昭,怎么辦灵妨?
其實(shí),這樣的數(shù)據(jù)數(shù)量更為龐大落竹。我們難道對(duì)它們視而不見(jiàn)嗎泌霍?
如果你想到了爬蟲(chóng),那么你的思考方向是對(duì)的述召。爬蟲(chóng)幾乎可以把一切看得見(jiàn)的(甚至是看不見(jiàn)的) Web數(shù)據(jù)朱转,都統(tǒng)統(tǒng)幫你弄下來(lái)。然而編寫和使用爬蟲(chóng)是有很高的成本的积暖。包括時(shí)間資源藤为、技術(shù)能力等。如果面對(duì)任何Web數(shù)據(jù)獲取問(wèn)題夺刑,你都不假思索“上大錘”缅疟,有時(shí)候很可能是“殺雞用了牛刀”分别。
在“別人準(zhǔn)備好的數(shù)據(jù)”和“需要自己爬取的數(shù)據(jù)”之間,還有很寬廣的一片地帶存淫,這里就是API的天地耘斩。
API是什么?
它是Application Programming Interface的縮寫桅咆。具體而言括授,就是某個(gè)網(wǎng)站,有不斷積累和變化的數(shù)據(jù)岩饼。這些數(shù)據(jù)如果整理出來(lái)荚虚,不僅耗時(shí),而且占地方忌愚,況且剛剛整理好就有過(guò)期的危險(xiǎn)曲管。大部分人需要的數(shù)據(jù),其實(shí)都只是其中的一小部分硕糊,時(shí)效性的要求卻可能很強(qiáng)院水。因此整理儲(chǔ)存,并且提供給大眾下載简十,是并不經(jīng)濟(jì)劃算的檬某。
可是如果不能以某種方式把數(shù)據(jù)開(kāi)放出來(lái),又會(huì)面對(duì)無(wú)數(shù)爬蟲(chóng)的騷擾螟蝙。這會(huì)給網(wǎng)站的正常運(yùn)行帶來(lái)很多煩惱恢恼。折中的辦法,就是網(wǎng)站主動(dòng)提供一個(gè)通道胰默。當(dāng)你需要某一部分?jǐn)?shù)據(jù)的時(shí)候场斑,雖然沒(méi)有現(xiàn)成的數(shù)據(jù)集,卻只需要利用這個(gè)通道牵署,描述你自己想要的數(shù)據(jù)漏隐,然后網(wǎng)站審核(一般是自動(dòng)化的,瞬間完成)之后奴迅,認(rèn)為可以給你青责,就立刻把你明確索要的數(shù)據(jù)發(fā)送過(guò)來(lái)。雙方皆大歡喜取具。
今后你找數(shù)據(jù)的時(shí)候脖隶,也不妨先看看目標(biāo)網(wǎng)站是否提供了API,以避免做無(wú)用功暇检。
這個(gè)github項(xiàng)目里产阱,有一份非常詳盡的列表,涵蓋了目前常見(jiàn)的主流網(wǎng)站API資源狀況块仆。作者還在不斷整理修訂心墅,你可以把它收藏起來(lái)酿矢,慢慢看。
如果我們得知某個(gè)網(wǎng)站提供API怎燥,并且通過(guò)看說(shuō)明文檔,知道了我們需要的數(shù)據(jù)就在其中蜜暑,那問(wèn)題就變成了——該如何通過(guò)API來(lái)獲得數(shù)據(jù)呢铐姚?
下面我們用一個(gè)實(shí)際的例子,為你全程展示操作步驟肛捍。
來(lái)源
我們找的樣例隐绵,是維基百科。
維基百科的API總覽拙毫,請(qǐng)參考這個(gè)頁(yè)面依许。
假設(shè)我們關(guān)心的,是某一個(gè)時(shí)間段內(nèi)缀蹄,指定維基百科文章頁(yè)面的訪問(wèn)量峭跳。
維基百科專門為我們提供了一類數(shù)據(jù),叫做度量數(shù)據(jù)(metrics)缺前,其中就涵蓋了頁(yè)面訪問(wèn)次數(shù)這個(gè)關(guān)鍵值蛀醉。對(duì)應(yīng)API的介紹頁(yè)面,在這里衅码。
頁(yè)面里有一個(gè)樣例拯刁。假設(shè)你需要獲得2015年10月,愛(ài)因斯坦這個(gè)詞條頁(yè)面的訪問(wèn)數(shù)量逝段,就可以這樣調(diào)用:
GET http://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/en.wikipedia/all-access/all-agents/Albert_Einstein/daily/2015100100/2015103100
我們可以把GET后面這一長(zhǎng)串的網(wǎng)址垛玻,輸入到瀏覽器的地址欄,然后回車奶躯,看看會(huì)得到什么結(jié)果帚桩。
我們?cè)跒g覽器里,看到上圖中那一長(zhǎng)串文字巫糙。你可能感覺(jué)很奇怪——這是什么玩意兒朗儒?
恭喜你,這就是我們需要獲得的數(shù)據(jù)了参淹。只不過(guò)醉锄,它使用了一種特殊的數(shù)據(jù)格式,叫做JSON浙值。
JSON是目前互聯(lián)網(wǎng)上數(shù)據(jù)交互的主流格式之一恳不。如果你想搞清楚JSON的含義和用法,可以參考這個(gè)教程开呐。
我們?cè)跒g覽器里烟勋,初始只能看到數(shù)據(jù)最開(kāi)頭的一部分规求。但是里面已經(jīng)包含了很有價(jià)值的內(nèi)容:
{"items":[{"project":"en.wikipedia","article":"Albert_Einstein","granularity":"daily","timestamp":"2015100100","access":"all-access","agent":"all-agents","views":18860}
這一段里蝶糯,我們看到項(xiàng)目名稱(en.wikipedia)烟馅,文章標(biāo)題(Albert Einstein),統(tǒng)計(jì)粒度(天)团驱,時(shí)間戳(2015年10月1日)沮尿,訪問(wèn)類型(全部)丛塌,終端類型(全部),以及訪問(wèn)數(shù)量(18860)畜疾。
我們用滑動(dòng)條拖拽返回的文本到最后赴邻,會(huì)看到如下的信息:
{"project":"en.wikipedia","article":"Albert_Einstein","granularity":"daily","timestamp":"2015103100","access":"all-access","agent":"all-agents","views":16380}]}
與10月1日的數(shù)據(jù)對(duì)比,只有時(shí)間戳(2015年10月31日)和訪問(wèn)數(shù)量(16380)發(fā)生了變化啡捶。
中間我們跳過(guò)的姥敛,是10月2日到10月30日之間的數(shù)據(jù)。存儲(chǔ)格式都是一樣的瞎暑,也只是日期和訪問(wèn)量?jī)身?xiàng)數(shù)據(jù)值在變化彤敛。
需要的數(shù)據(jù)都在這里,你只需要提取出相應(yīng)的信息金顿,就可以了臊泌。但是如果讓你手動(dòng)來(lái)做(例如拷貝需要的項(xiàng),粘貼到Excel中)揍拆,顯然效率很低渠概,而且很容易出錯(cuò)。下面我們來(lái)展示一下嫂拴,如何用R編程環(huán)境來(lái)自動(dòng)化完成這一過(guò)程播揪。
準(zhǔn)備
在正式用R調(diào)用API前,我們需要進(jìn)行一些必要的準(zhǔn)備工作筒狠。
首先是安裝R猪狈。
請(qǐng)先到這個(gè)網(wǎng)址下載R基礎(chǔ)安裝包。
R的下載位置有很多辩恼。建議你選擇清華大學(xué)的鏡像雇庙,可以獲得比較高的下載速度。
請(qǐng)根據(jù)你的操作系統(tǒng)平臺(tái)灶伊,選擇其中對(duì)應(yīng)的版本下載疆前。我用的是macOS版本。
下載得到pkg文件聘萨。雙擊就可以安裝竹椒。
安裝了基礎(chǔ)包之后,我們繼續(xù)安裝集成開(kāi)發(fā)環(huán)境RStudio米辐。它可以幫助你輕松地以交互方式和R溝通胸完。RStudio的下載地址在這里书释。
依據(jù)你的操作系統(tǒng)情況,選擇對(duì)應(yīng)的安裝包赊窥。macOS安裝包為dmg文件爆惧。雙擊打開(kāi)后,把其中的RStudio.app圖標(biāo)拖動(dòng)到Applications文件夾中锨能,安裝就完成了检激。
下面我們從應(yīng)用目錄中,雙擊運(yùn)行RStudio腹侣。
我們先在RStudio的Console中,運(yùn)行如下語(yǔ)句齿穗,安裝一些需要用到的軟件包:
install.packages("tidyverse")
install.packages("rlist")
安裝完畢后傲隶,選擇菜單里的File->New
,從以下界面中選擇 R Notebook窃页。
R Notebook默認(rèn)提供給我們一個(gè)模板跺株,附帶一些基礎(chǔ)使用說(shuō)明。
我們嘗試點(diǎn)擊編輯區(qū)域(左側(cè))代碼部分(灰色)的運(yùn)行按鈕脖卖。
立即就可以看到繪圖的結(jié)果了乒省。
我們點(diǎn)擊菜單欄上的Preview按鈕,來(lái)看整個(gè)兒代碼的運(yùn)行結(jié)果畦木。運(yùn)行結(jié)果會(huì)以圖文并茂的HTML文件方式展示出來(lái)袖扛。
熟悉了環(huán)境后,我們?cè)搶?shí)際操作運(yùn)行自己的代碼了十籍。我們把左側(cè)編輯區(qū)的開(kāi)頭說(shuō)明區(qū)保留蛆封,把其余部分刪除,并且把文件名改成有意義的web-data-api-with-R
勾栗。
至此惨篱,準(zhǔn)備工作就緒。下面我們就要開(kāi)始實(shí)際操作了围俘。
操作
實(shí)際操作過(guò)程中砸讳,我們從維基百科上換另外一篇維基文章作為樣例,以證明本操作方法的通用性界牡。選擇的文章是我們?cè)?a href="http://www.reibang.com/p/e4b24a734ccc" target="_blank">介紹詞云制作時(shí)使用過(guò)的簿寂,叫做“Yes, Minisiter”。這是一部1980年代的英國(guó)喜劇欢揖。
我們首先在瀏覽器里嘗試一下陶耍,能否修改API樣例里的參數(shù),來(lái)獲得“Yes, Minister”文章訪問(wèn)統(tǒng)計(jì)數(shù)據(jù)她混。作為測(cè)試烈钞,我們暫時(shí)只收集2017年10月1日到2017年10月3日 泊碑,共3天的數(shù)據(jù)。
相對(duì)樣例毯欣,我們需要替換的內(nèi)容包括起止時(shí)間和文章標(biāo)題馒过。
我們?cè)跒g覽器的地址欄輸入:
https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/en.wikipedia/all-access/all-agents/Yes_Minister/daily/2017100100/2017100300
返回結(jié)果如下:
數(shù)據(jù)能夠正常返回,下面我們?cè)赗Studio中采用語(yǔ)句方式來(lái)調(diào)用酗钞。
注意下面的代碼中腹忽,程序輸出部分的開(kāi)頭會(huì)有##
標(biāo)記,以便和執(zhí)行代碼本身相區(qū)別砚作。
一上來(lái)窘奏,我們就需要設(shè)置一下時(shí)區(qū)。不然后面處理時(shí)間數(shù)據(jù)的時(shí)候葫录,會(huì)遇到錯(cuò)誤着裹。
Sys.setenv(TZ="Asia/Shanghai")
然后,我們調(diào)用tidyverse軟件包米同,它是個(gè)合集骇扇,一次性加載許多我們后面要用到的功能。
library(tidyverse)
## Loading tidyverse: ggplot2
## Loading tidyverse: tibble
## Loading tidyverse: tidyr
## Loading tidyverse: readr
## Loading tidyverse: purrr
## Loading tidyverse: dplyr
## Conflicts with tidy packages ----------------------------------------------
## filter(): dplyr, stats
## lag(): dplyr, stats
這里可能會(huì)遇到一些警告內(nèi)容面粮,不要理會(huì)就可以少孝。對(duì)咱們的操作毫不影響。
根據(jù)前面的例子熬苍,我們定義需要查詢的時(shí)間跨度稍走,并且指定要查找的維基文章名稱。
注意與Python不同冷溃,R語(yǔ)言中钱磅,賦值采用<-
標(biāo)記,而不是=
似枕。不過(guò)R語(yǔ)言其實(shí)挺隨和盖淡,你要是非得堅(jiān)持用=
,它也能認(rèn)得凿歼,并不會(huì)報(bào)錯(cuò)褪迟。
starting <- "20171001"
ending <- "20171003"
article_title <- "Yes Minister"
根據(jù)已經(jīng)設(shè)定的參數(shù),我們就可以生成調(diào)用的API地址了答憔。
url <- paste("https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/en.wikipedia/all-access/all-agents",
article_title,
"daily",
starting,
ending,
sep = "/")
這里我們使用的是paste函數(shù)味赃,它幫助我們把幾個(gè)部分串接起來(lái),最后的sep
指的是鏈接幾個(gè)字符串部分時(shí)虐拓,需要使用的連接符心俗。因?yàn)槲覀円纬傻氖穷愃朴谀夸浉袷降木W(wǎng)址數(shù)據(jù),所以這里用的是分隔目錄時(shí)常見(jiàn)的斜線。
我們檢查一下生成的url地址是不是正確:
url
## [1] "https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/en.wikipedia/all-access/all-agents/Yes Minister/daily/20171001/20171003"
檢查完畢城榛,結(jié)果正確揪利。下面我們需要實(shí)際執(zhí)行GET
函數(shù),來(lái)調(diào)用API狠持,獲得維基百科的反饋數(shù)據(jù)疟位。
要執(zhí)行這一功能,我們需要加載另外一個(gè)軟件包喘垂,httr
甜刻。它類似于Python中的request軟件包,類似于Web瀏覽器正勒,可以完成和遠(yuǎn)端服務(wù)器的溝通得院。
library(httr)
然后我們開(kāi)始調(diào)用。
response <-GET(url, user_agent="my@email.com this is a test")
我們看看調(diào)用API的結(jié)果:
response
## Response [https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/en.wikipedia/all-access/all-agents/Yes Minister/daily/20171001/20171003]
## Date: 2017-10-13 03:10
## Status: 200
## Content-Type: application/json; charset=utf-8
## Size: 473 B
注意其中的status
一項(xiàng)章贞。我們看到它的返回值為200尿招。以2開(kāi)頭的狀態(tài)編碼是最好的結(jié)果,意味著一切順利阱驾;如果狀態(tài)值的開(kāi)頭是數(shù)字4或者5,那就有問(wèn)題了怪蔑,你需要排查錯(cuò)誤里覆。
既然我們很幸運(yùn)地沒(méi)有遇到問(wèn)題,下面就打開(kāi)返回內(nèi)容看看里面都有什么吧缆瓣。因?yàn)槲覀冎婪祷氐膬?nèi)容是JSON格式喧枷,所以我們加載jsonlite
軟件包,以便用清晰的格式把內(nèi)容打印出來(lái)弓坞。
library(jsonlite)
##
## Attaching package: 'jsonlite'
## The following object is masked from 'package:purrr':
##
## flatten
然后我們打印返回JSON文本的內(nèi)容隧甚。
toJSON(fromJSON(content(response, as="text")), pretty = TRUE)
## {
## "items": [
## {
## "project": "en.wikipedia",
## "article": "Yes_Minister",
## "granularity": "daily",
## "timestamp": "2017100100",
## "access": "all-access",
## "agent": "all-agents",
## "views": 654
## },
## {
## "project": "en.wikipedia",
## "article": "Yes_Minister",
## "granularity": "daily",
## "timestamp": "2017100200",
## "access": "all-access",
## "agent": "all-agents",
## "views": 644
## },
## {
## "project": "en.wikipedia",
## "article": "Yes_Minister",
## "granularity": "daily",
## "timestamp": "2017100300",
## "access": "all-access",
## "agent": "all-agents",
## "views": 578
## }
## ]
## }
可以看到,3天的訪問(wèn)數(shù)量統(tǒng)計(jì)信息渡冻,以及包含的其他元數(shù)據(jù)戚扳,都正確地從服務(wù)器用API反饋給了我們。
我們把這個(gè)JSON內(nèi)容存儲(chǔ)起來(lái)族吻。
result <- fromJSON(content(response, as="text"))
檢查一下存儲(chǔ)的內(nèi)容:
result
## $items
## project article granularity timestamp access agent
## 1 en.wikipedia Yes_Minister daily 2017100100 all-access all-agents
## 2 en.wikipedia Yes_Minister daily 2017100200 all-access all-agents
## 3 en.wikipedia Yes_Minister daily 2017100300 all-access all-agents
## views
## 1 654
## 2 644
## 3 578
我們看看解析之后帽借,存儲(chǔ)的類型是什么:
typeof(result)
## [1] "list"
存儲(chǔ)的類型是列表(list)〕瑁可是為了后續(xù)的分析砍艾,我們希望把其中需要的信息提取出來(lái),組成數(shù)據(jù)框(dataframe)巍举。方法很簡(jiǎn)單脆荷,使用rlist
這個(gè)R包,就可以輕松辦到。
library(rlist)
我們需要使用其中的兩個(gè)方法蜓谋,一個(gè)是list.select
梦皮,用來(lái)把指定的信息抽取出來(lái);一個(gè)是list.stack
孤澎,用來(lái)把列表生成數(shù)據(jù)框届氢。
df <- list.stack(list.select(result, timestamp, views))
我們看看結(jié)果:
df
## timestamp views
## 1 2017100100 654
## 2 2017100200 644
## 3 2017100300 578
數(shù)據(jù)抽取是正確的,包括了日期和瀏覽數(shù)量覆旭。但是這個(gè)日期格式不是標(biāo)準(zhǔn)格式退子,后面分析會(huì)有問(wèn)題。我們需要做轉(zhuǎn)化型将。
處理時(shí)間日期格式寂祥,最好的辦法是用lubridate
軟件包。我們先調(diào)用它七兜。
library(lubridate)
##
## Attaching package: 'lubridate'
## The following object is masked from 'package:base':
##
## date
由于日期字符串后面還有表示時(shí)區(qū)的兩位(這里都是0)丸凭,我們需要調(diào)用stringr
軟件包,將其截取掉腕铸。然后才能正確轉(zhuǎn)換惜犀。
library(stringr)
然后我們開(kāi)始轉(zhuǎn)換,先用str_sub
函數(shù)(來(lái)自于stringr
軟件包)把日期字符串的后兩位抹掉狠裹,然后用lubridate
軟件包里面的ymd
函數(shù)虽界,將原先的字符串轉(zhuǎn)換為標(biāo)準(zhǔn)日期格式。修改后的數(shù)據(jù)涛菠,我們存儲(chǔ)回df$timestamp
莉御。
df$timestamp <- ymd(str_sub(df$timestamp, 1, -3))
我們?cè)賮?lái)看看此時(shí)的df
內(nèi)容:
df
## timestamp views
## 1 2017-10-01 654
## 2 2017-10-02 644
## 3 2017-10-03 578
至此,我們需要的數(shù)據(jù)都格式正確地保留下來(lái)了俗冻。
不過(guò)礁叔,如果為了處理每一篇文章的閱讀數(shù)量,我們都這樣一條條跑語(yǔ)句迄薄,效率很低琅关,而且難免會(huì)出錯(cuò)。我們把剛才的輸入語(yǔ)句整理成函數(shù)讥蔽,后面使用起來(lái)會(huì)更加方便死姚。
整理函數(shù)的時(shí)候,我們順便采用dplyr
包的“管道”(即你會(huì)看到的%>%
符號(hào))格式改寫一下前面的內(nèi)容勤篮,這樣可以省卻中間變量都毒,而且看起來(lái)更為清晰明確。
get_pv <- function(article_title, starting, ending){
url <- paste("https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/en.wikipedia/all-access/all-agents",
article_title,
"daily",
starting,
ending,
sep = "/")
df <- url %>%
GET(user_agent="my@email.com this is a test") %>%
content(as="text") %>%
fromJSON() %>%
list.select(timestamp, views) %>%
list.stack() %>%
mutate(timestamp = timestamp %>%
str_sub(1,-3) %>%
ymd())
df
}
我們用新定義的函數(shù)碰缔,重新嘗試一下剛才的API數(shù)據(jù)獲日司ⅰ:
starting <- "20171001"
ending <- "20171003"
article_title <- "Yes Minister"
get_pv(article_title, starting, ending)
## timestamp views
## 1 2017-10-01 654
## 2 2017-10-02 644
## 3 2017-10-03 578
結(jié)果正確。
不過(guò)如果只是抓取3天的數(shù)據(jù),我們這么大費(fèi)周章就沒(méi)有意思了瀑焦。下面我們擴(kuò)展時(shí)間范圍腌且,嘗試抓取自2014年初至2017年10月10日的數(shù)據(jù)。
starting <- "20141001"
ending <- "20171010"
article_title <- "Yes Minister"
df <- get_pv(article_title, starting, ending)
我們看看運(yùn)行結(jié)果:
head(df)
## timestamp views
## 1 2015-07-01 538
## 2 2015-07-02 588
## 3 2015-07-03 577
## 4 2015-07-04 473
## 5 2015-07-05 531
## 6 2015-07-06 500
有意思的是榛瓮,數(shù)據(jù)的統(tǒng)計(jì)并不是從2014年開(kāi)始铺董,而是2015年7月。這究竟是由于"Yes, Minister"維基文章是2015年7月才發(fā)布禀晓?還是因?yàn)槲覀冋{(diào)用的API對(duì)檢索時(shí)間范圍有限制精续?抑或是其他原因?這個(gè)問(wèn)題留作思考題粹懒,歡迎把你的答案和分析過(guò)程分享給大家重付。
下面,我們把獲得的數(shù)據(jù)用ggplot2
軟件包繪制圖形凫乖。用一行語(yǔ)句确垫,看看幾年之內(nèi),"Yes,
Minister"維基文章訪問(wèn)數(shù)量的變化趨勢(shì)帽芽。
ggplot(data=df, aes(timestamp, views)) + geom_line()
作為一部30多年前的劇集删掀,今天還不斷有人訪問(wèn)其維基頁(yè)面,可見(jiàn)它的魅力导街。從圖中可以非常明顯看到幾個(gè)峰值爬迟,你能解釋它們出現(xiàn)的原因嗎?這將作為今天的另外一道習(xí)題菊匿,供你思考。
小結(jié)
簡(jiǎn)單回顧一下计福,本文我們接觸到了以下重要知識(shí)點(diǎn):
- 獲取Web數(shù)據(jù)的三種常見(jiàn)方式及其應(yīng)用場(chǎng)景跌捆;
- 常見(jiàn)API的目錄資源獲取地址和使用方法;
- 如何用R來(lái)調(diào)用API象颖,并且從服務(wù)器反饋結(jié)果中抽取關(guān)心的數(shù)據(jù)佩厚。
希望讀過(guò)本文,你能初步掌握上述內(nèi)容说订,并且根據(jù)文中提供的鏈接和教程資源拓展學(xué)習(xí)相關(guān)知識(shí)抄瓦。
討論
你之前利用API獲取過(guò)Web數(shù)據(jù)嗎?除了R以外陶冷,你還使用過(guò)哪些API的調(diào)用工具钙姊?與本文的介紹比起來(lái),這些工具有什么特點(diǎn)埂伦?歡迎留言煞额,把你的心得經(jīng)驗(yàn)分享給大家,我們一起交流討論。
喜歡請(qǐng)點(diǎn)贊膊毁。還可以微信關(guān)注和置頂我的公眾號(hào)“玉樹(shù)芝蘭”(nkwangshuyi)胀莹。
如果你對(duì)數(shù)據(jù)科學(xué)感興趣,不妨閱讀我的系列教程索引貼《如何高效入門數(shù)據(jù)科學(xué)婚温?》描焰,里面還有更多的有趣問(wèn)題及解法。