如何用R和API免費(fèi)獲取Web數(shù)據(jù)袱瓮?

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)題及解法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末栅螟,一起剝皮案震驚了整個(gè)濱河市荆秦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嵌巷,老刑警劉巖萄凤,帶你破解...
    沈念sama閱讀 216,324評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異搪哪,居然都是意外死亡靡努,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門晓折,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惑朦,“玉大人,你說(shuō)我怎么就攤上這事漓概⊙拢” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 162,328評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵胃珍,是天一觀的道長(zhǎng)梁肿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)觅彰,這世上最難降的妖魔是什么吩蔑? 我笑而不...
    開(kāi)封第一講書人閱讀 58,147評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮填抬,結(jié)果婚禮上烛芬,老公的妹妹穿的比我還像新娘。我一直安慰自己飒责,他們只是感情好赘娄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著宏蛉,像睡著了一般遣臼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拾并,一...
    開(kāi)封第一講書人閱讀 51,115評(píng)論 1 296
  • 那天暑诸,我揣著相機(jī)與錄音蚌讼,去河邊找鬼。 笑死个榕,一個(gè)胖子當(dāng)著我的面吹牛篡石,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播西采,決...
    沈念sama閱讀 40,025評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼凰萨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了械馆?” 一聲冷哼從身側(cè)響起胖眷,我...
    開(kāi)封第一講書人閱讀 38,867評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎霹崎,沒(méi)想到半個(gè)月后珊搀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡尾菇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評(píng)論 2 332
  • 正文 我和宋清朗相戀三年境析,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片派诬。...
    茶點(diǎn)故事閱讀 39,688評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡劳淆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出默赂,到底是詐尸還是另有隱情沛鸵,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評(píng)論 5 343
  • 正文 年R本政府宣布缆八,位于F島的核電站曲掰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏奈辰。R本人自食惡果不足惜栏妖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冯挎。 院中可真熱鬧,春花似錦咙鞍、人聲如沸房官。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,657評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)翰守。三九已至,卻和暖如春疲酌,著一層夾襖步出監(jiān)牢的瞬間蜡峰,已是汗流浹背了袁。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,811評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留湿颅,地道東北人载绿。 一個(gè)月前我還...
    沈念sama閱讀 47,685評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像油航,于是被迫代替她去往敵國(guó)和親崭庸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容