一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

用R語言三行代碼寫爬蟲

 iceer1212 2020-05-16


每當(dāng)程序員們感嘆“人生苦短”的時候,都會想到Python——這段子已經(jīng)如同“Hello World”一樣成為圈子里的流行梗——不過最近,我對Python的感覺還是發(fā)生了變化。上周末我們一群奔三的研究僧在南京碰頭,我發(fā)現(xiàn)大多數(shù)公共管理方向的學(xué)生學(xué)習(xí)Python的原始動力來自于網(wǎng)頁爬蟲——為論文找到更好的數(shù)據(jù);但是顯然,僅就這個目的而言,新學(xué)一門編程語言還是一件不太輕松的事,加上Python3.X與Python2.X命令在語法結(jié)構(gòu)上略有差異,讓我越來越感覺在公共管理的江湖上,Python網(wǎng)頁爬蟲的武林地位有可能被R語言取代。

這一期就來講講如何用R語言寫網(wǎng)頁爬蟲,我用爬蟲教程慣用的案例——下載和解析豆瓣電影TOP250的數(shù)據(jù)來做具體演示;對于其他的網(wǎng)頁爬蟲方法及工具,請參閱我的另一篇文章:抓取網(wǎng)頁數(shù)據(jù)的六種工具,那篇文章里包含一段“百度新聞”的Python爬蟲代碼。

我在正式裝13之前,需要先來解釋三個概念:HTML、CSS和 JavaScript,這有助于理解后面的代碼;我假設(shè)這篇文章的讀者沒有修過類似“大學(xué)計算機基礎(chǔ)”這樣的課程,如果有讀者學(xué)習(xí)過這門課程,下面這一部分就可以直接跳過。

什么是“網(wǎng)頁(源代碼)”?純文本

什么是“網(wǎng)頁”?就是我們每天用瀏覽器打開的東西唄——不行,這個定義太感性了,我換一個更理性一點的問題——網(wǎng)頁是怎么用代碼寫成的?要回答這個問題,我們不妨找來一個網(wǎng)頁看看,就拿“京東商城”來說事兒吧,畢竟免費給老學(xué)長打廣告我還是樂意的;下面是京東的主頁及源代碼(我用的是Microsoft Edge瀏覽器,網(wǎng)頁右擊“查看源”,下同;其他瀏覽器類似):


怎么樣,雙11瘋狂剁手的時候有沒有想過,你的每一次點擊背后,是一行行這樣的代碼在執(zhí)行?所以啊姑娘們,請珍惜你身邊每一位真誠的程序猿吧……好了扯遠(yuǎn)了,說好不把個人情緒帶入工作中的……來回答上面那個問題:什么是“網(wǎng)頁”?“統(tǒng)計之都”(好吧是在為另一位老學(xué)長打廣告了)給過一個我目前看過最為合適的定義:網(wǎng)頁的源代碼就是純文本(吐槽:盡管聽起來像是廢話);網(wǎng)頁源代碼包含HTML,CSS 和JavaScript三種文本結(jié)構(gòu),即標(biāo)記語言(HTML,只有語法,沒有變量和邏輯)、層疊樣式表(CSS,用于控制元素的展現(xiàn)形式)、腳本語言(JavaScript,操作HTML中元素的增刪改);而我們要的數(shù)據(jù)就在HTML元素中,什么意思?下面就正式開始我的表演了:

抓什么?先看網(wǎng)頁源代碼

我們這一期的任務(wù)是抓取“豆瓣電影TOP250”上所有電影的“名稱、得分、簡評”3項內(nèi)容——我們暫時稱之為“字段”;首先我們得看看這3個字段在網(wǎng)頁源代碼中的位置:


顯而易見,在“豆瓣”的源代碼里,“名稱、得分、簡評”分別對應(yīng)class='title'、class='rating_num'、class='inq'3個字段,這些就是我們需要爬取的數(shù)據(jù)——隱藏在HTML的元素中。

怎么抓?rvest包

這里抓取網(wǎng)頁數(shù)據(jù)的基本思路是,抽取出以title、rating_num以及inq為標(biāo)簽的內(nèi)容;這就用到了上面提到的CSS思想——通過層疊樣式表的標(biāo)簽屬性達到篩選的目的。下面開始網(wǎng)頁爬取:

首先安裝并加載rvest包                                

install.packages('rvest')

library('rvest')

然后定義爬取的網(wǎng)站,并從網(wǎng)站中讀取HTML代碼

url <- 'https://movie.douban.com/top250'

read_html(url) %>%html_nodes('.title') %>% html_text()

注意,上面的“%>%”是R語言中的管道函數(shù),表示把左邊的值輸出為右邊函數(shù)的第一個參數(shù):


最后依次抓取另外兩個字段:

read_html(url) %>% html_nodes('.rating_num') %>% html_text()

read_html(url) %>% html_nodes('.inq') %>% html_text()

從調(diào)用rvest包到爬取出結(jié)果,正好三行代碼。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美欧美日韩综合一区| 麻豆看片麻豆免费视频| 成年女人下边潮喷毛片免费| 一个人的久久精彩视频| 国产一区麻豆水好多高潮| 免费观看在线午夜视频| 我想看亚洲一级黄色录像| 老富婆找帅哥按摩抠逼视频| 日本精品免费在线观看| 五月天丁香婷婷一区二区| 九九热这里只有精品视频| 91精品欧美综合在ⅹ| 国内外免费在线激情视频| 亚洲av秘片一区二区三区| 狠狠干狠狠操亚洲综合| 亚洲男人天堂成人在线视频| 欧美日韩在线第一页日韩| 婷婷基地五月激情五月| 国产欧美另类激情久久久| 欧美日韩国产的另类视频| 久久99午夜福利视频| 久久精品国产亚洲av久按摩| 日韩中文字幕狠狠人妻| 国产精品美女午夜视频| 国产偷拍精品在线视频| 五月天丁香婷婷一区二区| 一级片二级片欧美日韩| 亚洲一级在线免费观看| 国产欧美日韩不卡在线视频| 日本东京热加勒比一区二区| 少妇人妻精品一区二区三区| 国产av乱了乱了一区二区三区| 精品亚洲香蕉久久综合网| 九九热精品视频免费观看| 偷自拍亚洲欧美一区二页| 亚洲一区二区三区一区| 蜜桃传媒视频麻豆第一区| 午夜免费精品视频在线看| 久久国产精品亚州精品毛片| 91亚洲精品综合久久| 色婷婷视频国产一区视频|