電話:15992422229 銷售一、13640293427 銷售二、13660366684 銷售三
郵箱:congseng@hotmail.com
地址:中國廣東省廣州市番禺區(qū)番禺大道北555號(hào)天安科技園總部中心14號(hào)樓二樓
技術(shù)支持:搜浪網(wǎng)絡(luò)
聲明:如果本站有使用不當(dāng)?shù)臉O限詞匯,并非本站之意愿,本站鄭重聲明所有極限詞匯全部作廢
一
掃
關(guān)
注
微
信
互聯(lián)網(wǎng)已經(jīng)成熟,可以用于自己的個(gè)人項(xiàng)目的數(shù)據(jù)集。有時(shí),您很幸運(yùn),并且可以訪問一個(gè)API,您可以在其中直接使用大數(shù)據(jù)分析R語言來請(qǐng)求數(shù)據(jù)。有時(shí),您不會(huì)很幸運(yùn),也能夠從整齊的格式。發(fā)生此類狀況時(shí),我們必須轉(zhuǎn)向網(wǎng)頁讀取,即一種通過在網(wǎng)站的HTML代碼中找到想要的數(shù)據(jù)來獲得要探討的數(shù)據(jù)的技術(shù)。
在本教程中,我們將介紹如何在大數(shù)據(jù)分析R語言中進(jìn)行網(wǎng)絡(luò)抓取的基礎(chǔ)知識(shí)。我們將從國家氣象局網(wǎng)站上的天氣預(yù)報(bào)中抓取數(shù)據(jù)并將其轉(zhuǎn)化為可用格式。
當(dāng)我們找不到所需的數(shù)據(jù)時(shí),Web抓取將提供機(jī)會(huì)聲光查找標(biāo)簽,并為我們提供實(shí)際建立數(shù)據(jù)集所需的軟件。而且因?yàn)槲覀兪褂么髷?shù)據(jù)分析R語言進(jìn)行網(wǎng)站抓取,因此即使我們使用的網(wǎng)站未升級(jí),我們可以繼續(xù)簡單地重新運(yùn)行代碼以獲得升級(jí)的數(shù)據(jù)集。
了解網(wǎng)頁
在開始學(xué)習(xí)怎么抓取網(wǎng)站之前,我們必須知道網(wǎng)頁本來的結(jié)構(gòu)。
從用戶的視角來看,網(wǎng)頁帶有以簡潔和容易閱讀的方法組織的文本,圖像跟鏈接。但是網(wǎng)站本來是用特定的編碼語言編寫的,然后由我們的網(wǎng)絡(luò)瀏覽器解釋。在進(jìn)行網(wǎng)站抓取時(shí),我們必須處理網(wǎng)站本來的實(shí)際內(nèi)容:瀏覽器解釋之前的代碼。
用于形成網(wǎng)頁的主要語言稱為超文本標(biāo)記語言(HTML),級(jí)聯(lián)樣式表(CSS)和Javasc大數(shù)據(jù)分析R語言ipt。HTML為網(wǎng)頁提供了其實(shí)際結(jié)構(gòu)跟內(nèi)容。CSS為網(wǎng)站提供了風(fēng)格跟外型,包括圖標(biāo)和形狀等具體信息。Javasc大數(shù)據(jù)分析R語言ipt提供了網(wǎng)站功能。
在本教程中,我們將主要集中于能否使用大數(shù)據(jù)分析R語言 Web抓取來調(diào)用構(gòu)成網(wǎng)頁的HTML和CSS。
HTML
與大數(shù)據(jù)分析R語言不同,HTML不是編程語言。相反,它稱為標(biāo)記語言 -它敘述網(wǎng)頁的內(nèi)容跟結(jié)構(gòu)。HTML是使用標(biāo)記來組織的 ,這些標(biāo)記被符號(hào)包圍。不同的標(biāo)簽執(zhí)行不同的功能。許多標(biāo)簽將一起形成并包括網(wǎng)頁的內(nèi)容。
最簡單的HTML文檔如下所示:
盡管以上是合法的HTML文檔,但它沒有文本或其它內(nèi)容。如果將其另存為.html文件并使用網(wǎng)絡(luò)瀏覽器打開它,則會(huì)發(fā)現(xiàn)空白頁。
請(qǐng)注意,該詞匯html被方括號(hào)括出來,表示它是一個(gè)標(biāo)記。要向此HTML文檔添加更多結(jié)構(gòu)跟文本,我們可以添加以下內(nèi)容:
在這里,我們添加了跟標(biāo)記,它們?yōu)槲臋n添加了更多結(jié)構(gòu)。
標(biāo)簽是我們?cè)贖TML中拿來指定語句文本的標(biāo)簽。
HTML中有眾多標(biāo)簽,但是在本教程中我們將能夠包含所有標(biāo)簽。如果有興趣,您可以查看此站點(diǎn)。最重要的外賣是了解標(biāo)簽有特定的名稱(html,body,p等)聲光查找標(biāo)簽,使他們?cè)贖TML文檔中識(shí)別。
請(qǐng)注意,每個(gè)標(biāo)簽都是“配對(duì)”的,意思是每個(gè)標(biāo)簽都伴隨著另一個(gè)名稱相同的標(biāo)簽。也就是說,開始標(biāo)記與另一個(gè)標(biāo)記配對(duì),該標(biāo)記標(biāo)示HTML文檔的起初跟結(jié)束。和和相同。
認(rèn)識(shí)到這一點(diǎn)很重要,因?yàn)樗试S標(biāo)簽相互嵌套。在跟標(biāo)簽嵌套,并嵌套在。這種嵌套使HTML具有“樹狀”的結(jié)構(gòu):
當(dāng)使用大數(shù)據(jù)分析R語言進(jìn)行網(wǎng)站抓取時(shí),這種類似樹的結(jié)構(gòu)將告知我們?cè)趺床檎疫@些標(biāo)簽,因此必須記住這一點(diǎn)。如果某個(gè)標(biāo)簽中嵌套了其它標(biāo)簽,則將包括標(biāo)簽稱為父標(biāo)簽,將其中的每個(gè)標(biāo)簽稱為“子級(jí)”。如果父親中有多個(gè)孩子,則這種孩子標(biāo)簽統(tǒng)稱為“兄弟姐妹”。父母,子女跟兄弟姐妹的這種概念讓我們對(duì)標(biāo)簽的層次結(jié)構(gòu)有了一個(gè)了解。
CSS
HTML提供了網(wǎng)站的內(nèi)容跟結(jié)構(gòu),而CSS提供了有關(guān)網(wǎng)頁樣式的信息。沒有CSS,網(wǎng)頁將更加特別簡陋。這是一個(gè)沒有CSS的簡單HTML文檔,對(duì)此進(jìn)行了演示。
當(dāng)我們說樣式時(shí),我們指的是各種各樣的東西。樣式可以指代特定HTML元素的形狀或其位置。像HTML一樣,CSS材料的范圍是那么之大,以至于我們能夠包含該語言中所有可能的概念。如果您有興趣,可以在這里認(rèn)識(shí)更多信息。
我們兩個(gè)概念都必須學(xué)習(xí)之前,我們深入至大數(shù)據(jù)預(yù)測(cè)R語言的網(wǎng)絡(luò)刮代碼的類跟IDS。
首先,讓我們說說類。如果我們應(yīng)建立一個(gè)網(wǎng)站,那么一般我們會(huì)期望網(wǎng)站的相近元素看起來相同。例如,我們也許希望列表中的許多項(xiàng)目都以相似的底色顯示為黑色。
我們可以借助在文本的HTML標(biāo)簽的每一行中直接插入一些包括顏色信息的CSS來實(shí)現(xiàn),例如:
該style文強(qiáng)調(diào),我們正在嘗試應(yīng)用CSS的標(biāo)簽。在引號(hào)內(nèi),我們發(fā)現(xiàn)一個(gè)鍵值對(duì)“ colo大數(shù)據(jù)分析R語言:大數(shù)據(jù)分析R語言ed”。colo大數(shù)據(jù)分析R語言指標(biāo)記中文本的底色,而白色表示要為顏色。
但是如同我們?cè)诶锩嫣岬降?,我們將要多次重?fù)了這個(gè)鍵值對(duì)。這不是理想的-如果我們想更換文本的樣式,則需要逐行更改每一行。
不用style在所有這種標(biāo)簽中重復(fù)此文本,我們可以將其更換為class選擇器:
的class選擇,我們可以更好地表明,這些標(biāo)簽被以某些形式有關(guān)。在一個(gè)單獨(dú)的CSS文件中,我們可以借助編寫以下內(nèi)容來建立紅色文本類并定義其外觀:
將這兩個(gè)元素組合至一個(gè)網(wǎng)頁中將形成與第一組紅色標(biāo)記相似的效果,但是它使我們無法很輕松地進(jìn)行迅速更改。
當(dāng)然,在本教程中,我們對(duì)網(wǎng)站抓取感興趣,而不是構(gòu)建網(wǎng)頁。但是,當(dāng)我們進(jìn)行網(wǎng)絡(luò)抓取時(shí),通常必須選用特定類型的HTML標(biāo)簽,因此我們必須知道CSS類的工作原理。
同樣,我們也許就會(huì)想抓取使用id標(biāo)識(shí)的特定數(shù)據(jù)。CSS ID用于為單個(gè)元素彰顯可識(shí)別的名稱,就像類能否幫助定義元素類一樣。
如果將id附加至HTML標(biāo)記,則在使用大數(shù)據(jù)分析R語言執(zhí)行實(shí)際的網(wǎng)站抓取時(shí),我們可以很輕松地識(shí)別該標(biāo)記。
如果您還不太了解類跟id,請(qǐng)不要擔(dān)心,當(dāng)我們開始處理代碼時(shí),它將顯得十分清晰。
有幾個(gè)大數(shù)據(jù)分析R語言庫旨在運(yùn)用HTML和CSS,并無法遍歷它們以查找特定標(biāo)簽。我們將在本教程中使用的庫是大數(shù)據(jù)分析R語言vest。
大數(shù)據(jù)分析R語言vest庫
該大數(shù)據(jù)分析R語言vest庫由傳奇人物哈德利·威克漢姆(Hadley Wickham)維護(hù),該庫使用戶可以輕松地從網(wǎng)站上抓取(“收獲”)數(shù)據(jù)。
大數(shù)據(jù)分析R語言vest是其中一個(gè)tidyve大數(shù)據(jù)分析R語言se庫,因此可以與捆綁軟件中包括的其它庫一起很好地工作。大數(shù)據(jù)分析R語言vest從來自Python的網(wǎng)絡(luò)抓取庫BeautifulSoup中獲得靈感。(相關(guān):o您的BeautifulSoup Python教程。)
在大數(shù)據(jù)分析R語言中抓取網(wǎng)站
為了使用該大數(shù)據(jù)分析R語言vest庫,我們首先必須安裝它,并使用lib大數(shù)據(jù)分析R語言a大數(shù)據(jù)預(yù)測(cè)R語言y()函數(shù)將其導(dǎo)入。
為了開始借助網(wǎng)站進(jìn)行解讀,我們首先必須從包括該網(wǎng)站的計(jì)算機(jī)服務(wù)器中請(qǐng)求該數(shù)據(jù)。為了復(fù)興,服務(wù)于此目的的大數(shù)據(jù)分析R語言ead_html()功能就是功能。
大數(shù)據(jù)分析R語言ead_html()接受Web U大數(shù)據(jù)預(yù)測(cè)R語言L作為參數(shù)。讓我們從后面的簡單的無CSS頁面開始,以知道該函數(shù)的工作原理。
simple 大數(shù)據(jù)分析R語言aping-pages/simple.html")
該大數(shù)據(jù)分析R語言ead_html()函數(shù)返回一個(gè)列表對(duì)象,其中包括我們中間討論的樹狀結(jié)構(gòu)。
假設(shè)我們想將單個(gè)標(biāo)簽中包括的文本存儲(chǔ)到函數(shù)中。為了訪問此文本,我們必須弄明白怎么定位此特定文本。這往往是CSS類跟ID可以為我們提供幫助的地方,因?yàn)閮?yōu)秀的開發(fā)人員一般會(huì)將CSS高度明確地置于其網(wǎng)站上。
在這些狀況下,我們沒有這樣的CSS,但是我們了解要訪問的標(biāo)記是頁面上唯一的標(biāo)記。為了捕獲文本,我們必須分別使用html_nodes()和html_text()函數(shù)來搜索該
標(biāo)簽并檢索文本。下面的代碼執(zhí)行此操作:
該simple變量已經(jīng)包括了我們應(yīng)抓取的HTML,因此剩下的任務(wù)就是從中搜索所需的元素。由于我們正在使用tidyve大數(shù)據(jù)分析R語言se,我們可以將HTML傳遞到不同的函數(shù)中。
我們必須將特定的HTML標(biāo)記或CSS類傳遞到html_nodes()函數(shù)中。我們必須標(biāo)記,因此我們將字符“ p”傳遞給變量。html_nodes()還返回一個(gè)列表,但是它返回HTML中帶有給定的特定HTML標(biāo)記或CSS類/標(biāo)識(shí)的所有節(jié)點(diǎn)。甲節(jié)點(diǎn)指的是在樹狀結(jié)構(gòu)的一個(gè)點(diǎn)。
一旦擁有所有這種節(jié)點(diǎn),就可以將輸出傳遞html_nodes()到html_text()函數(shù)中。我們必須獲得標(biāo)簽的實(shí)際文本,因此此功能可以幫助您解決此難題。
這些功能共同組成了許多常用的Web抓取任務(wù)。通常,使用大數(shù)據(jù)分析R語言(或任何其它語言)的Web抓取能歸結(jié)為下面三個(gè)步驟:
a.獲取您要抓取的網(wǎng)站的HTML
b.確定應(yīng)閱讀頁面的那一部分,并找出必須選用的HTML / CSS
c.選擇HTML并按照需要進(jìn)行預(yù)測(cè)
目標(biāo)網(wǎng)頁
對(duì)于本教程,我們將查看國家氣象局的網(wǎng)站。假設(shè)我們對(duì)建立自己的天氣應(yīng)用感興趣。我們必須氣象數(shù)據(jù)本身來填充它。
天氣數(shù)據(jù)經(jīng)常還會(huì)更新,因此我們將在必須時(shí)使用網(wǎng)絡(luò)抓取從NWS網(wǎng)站獲得此數(shù)據(jù)。
就我們的目的而言,我們將從舊金山獲得數(shù)據(jù),但是每個(gè)城市的網(wǎng)頁看起來都是相同的,因此對(duì)任何其它城市也可以使用同樣的方法。舊金山頁面的屏幕圖片如下所示:
我們對(duì)經(jīng)常的氣溫預(yù)報(bào)和濕度非常感興趣。每天都有夜間天氣預(yù)報(bào)和晚上氣溫預(yù)報(bào)?,F(xiàn)在,我們將要確定了所需的網(wǎng)站部分,我們可以瀏覽HTML以查看需要選用這些標(biāo)簽或類來捕捉此特定數(shù)據(jù)。
使用Ch大數(shù)據(jù)分析R語言ome Devtools
值得慶幸的是,大多數(shù)現(xiàn)代瀏覽器都有一個(gè)工具,允許客戶直接檢測(cè)任何網(wǎng)站的HTML和CSS。在Google Ch大數(shù)據(jù)分析R語言ome和Fi大數(shù)據(jù)分析R語言efox中,它們被稱為開發(fā)人員工具,在其它瀏覽器中帶有相同的名稱。對(duì)我們而言更有用的特定軟件是Inspecto大數(shù)據(jù)分析R語言。
您可以借助在瀏覽器的右上角找到開發(fā)人員工具。如果您使用的是Fi大數(shù)據(jù)分析R語言efox,則需要可以發(fā)現(xiàn)開發(fā)人員工具;如果您使用的是Ch大數(shù)據(jù)分析R語言ome,則可以瀏覽View -> Mo大數(shù)據(jù)分析R語言e Tools -> Develope大數(shù)據(jù)分析R語言 Tools。這將在您的瀏覽器窗口中開啟開發(fā)人員工具:
我們之前處理的HTML只是一個(gè)基本的知識(shí),但是您將在瀏覽器中發(fā)現(xiàn)的大多數(shù)網(wǎng)頁都非常復(fù)雜。如何使用大數(shù)據(jù)分析R語言rvest中進(jìn)行網(wǎng)站抓取
開發(fā)人員工具將使我們更容易選擇應(yīng)抓取并檢測(cè)HTML的網(wǎng)站的準(zhǔn)確元素。
我們應(yīng)該查看天氣頁面的HTML中的溫度,因此我們將使用“檢查”工具查看某些元素。Inspect工具將挑選出我們應(yīng)查找的準(zhǔn)確HTML,因此我們不必自己看!
通過單擊元素原本,我們可以發(fā)現(xiàn)下面HTML中包括了為期7天的分析。我們壓縮了其中的一些以讓其更具可讀性:
使用我們所學(xué)到的
現(xiàn)在,我們將要確定了必須在網(wǎng)頁中定位的特定HTML和CSS,可以大數(shù)據(jù)分析R語言vest用來捕獲它了。
從后面的HTML中,似乎每個(gè)溫度都包括在class中temp。一旦擁有所有那些標(biāo)簽,就可以從中提取文本。
使用此代碼,fo大數(shù)據(jù)分析R語言ecasts現(xiàn)在是對(duì)應(yīng)于低溫和高溫的字符串向量。
現(xiàn)在我們有了對(duì)大數(shù)據(jù)分析R語言變量感興趣的實(shí)際數(shù)據(jù),我們只應(yīng)該進(jìn)行一些常規(guī)數(shù)據(jù)預(yù)測(cè)就可以將矢量轉(zhuǎn)換為所需的格式。例如:
下一步
該大數(shù)據(jù)分析R語言vest庫使使用與tidyve大數(shù)據(jù)分析R語言se庫同樣的科技可以輕松方便地執(zhí)行Web抓取。
本教程應(yīng)該為您提供推進(jìn)一個(gè)小型Web抓取項(xiàng)目并起初探索更初級(jí)的Web抓取程序所需的軟件。與網(wǎng)頁讀取極為兼容的這些網(wǎng)站是體育網(wǎng)站,具有股價(jià)反而新聞報(bào)導(dǎo)的網(wǎng)站。