R語言爬蟲初嘗試 基於RVEST包學習

2022-05-16 15:01:50 字數 3298 閱讀 7365

注意:這文章是2月份寫的,拉勾網早改版了,**已經失效了,大家意思意思就好,主要看**的使用方法吧。。

最近一直在用且有維護的另乙個爬蟲是kindle **書爬蟲,blog位址見此:

部落格內容簡介及目錄

r語言爬蟲初嘗試-基於rvest包學習

thursday, february 26, 2015

在學完coursera的getting and cleaning data後,繼續學習用r弄爬蟲網路爬蟲。主要用的還是hadley wickham開發的rvest包。再次給這位矜矜業業開發各種好用的r包的大神奉上膝蓋

查閱資料如下:

rvest的github

rvest自身的幫助文件

言歸正傳,拿了幾個網頁練手。包括對拉勾網爬了一下蟲,還嘗試了對國外某黃頁爬蟲,對ebay使用者評價爬蟲分析其賣家賣的東西主要在哪個**段(我查的那個賣家,賣8.99和39.99最多,鞋子類),做了一下文字挖掘,還有爬了一下**資料,****情況等等。

之所以放拉勾網為例子,因為這個大家都比較熟一點?其他的都有點小眾=_=而且雖然我沒有跳槽的心,但年初卻是很多人跳槽的熱點。另外,因為之前聽人說過,要了解乙個公司的動態,有乙個辦法是去看這個公司放出來的招聘崗位,可以知道他們最近哪個業務線要擴張了,哪個業務線要跑人了,以及了解技術需求。

rvest基礎語法:

library(rvest)

lagou

"web

utf-8

") #

讀取資料,規定編碼

#之前我是用關鍵字搜尋,閱讀html**,獲得html_nodes裡需要什麼屬性,不過許多瀏覽器有開發者工具,可以直接獲得層級資訊。如遨遊

position% html_nodes("

li div.hot_pos_l a

") %>%html_text()

#上面就是直接讀取資料,獲得位置資訊

#不過在後面做其他**時發現,有時候資訊儲存在同類資料裡(如div沒有class等等),建議是找乙個大的分類,先獲得**資訊,再做資料

list_lagou% html_nodes("

li.clearfix")

#這裡正確找準正確的劃分點很重要。有,其實用li.clearfix一樣可以取(對於空格二選一,如"li.odd"或者"li.clearfix")

#接下來的company/position照選即可,因為事先已經分好了list,所以每乙個出多少心裡有數。。

在講完原理之後,現在開始嘗試寫**

因為裡面涉及太多的選取資料工作。為了避免出現太多變數,我最後是編了乙個函式,輸出資料庫

函式部分

#

下面開始寫**,首先寫乙個函式getdata,會輸出乙個資料框

getdata

然後是使用該函式,我這裡就爬兩頁

#使用該函式,

library(rvest)

url"final

for (i in 3:5)

#定義個數,把上面的getdata得到的data.frame合併

head(final)

上面完成了第乙個列表。爬出效果如圖

關於這個資料有什麼用呢…… 簡單來說,我們可以用它來看這個網上有多少在招的,各公司招人的比例,以及薪資水平,做一點基礎的資料分析。

雖然我現在不跳槽,不過了解一下市場狀況也是不錯的~譬如見下圖,從目前這網上的平均薪資與工作年限的關係來看,資料分析崗至少在職位前五年屬於薪資增長期,初始漲得快,後面漲得慢,但平均應有13%左右的增長?然後這網上目前沒有什麼高階崗位開出來(工作5-10年的崗位很少),反而是有些公司搞錯分類,放了一堆資料錄入的到資料分析欄目。。。

值得一提的是,因為資料分析這個類目裡包含了不同的類別,如資料錄入的也被歸到資料分析,還有高薪也被歸到這裡,所以不能完全按這個做參考。不過這個研究讓我深刻體會到了爬蟲的有效性!好玩!實用!可以用到工作中去:) 還可以像個獵頭一樣了解人才市場~~做個有情調的資料分析師~~

另外,其實我們還可以遍歷jd,看近期是什麼技術最吃香,是r還是python還是sql還是sas還是別的啥啥啥。下面是我隨機抽了個jd做的爬蟲。可以直接拿到相關資料。

final[1,9]

## [1]

## 45 levels: ...

urlw

utf-8")

d% html_nodes("

dd.job_bt p

") %>%html_text()d#

# [1] "1.金融、計算機、財務、經濟相關專業;"

## [2] "2.有**從業資格證者優先;"

## [3] "3.想從事文職類工作,對辦公軟體熟悉;"

## [4] "4.可接收已拿到學歷證的應屆畢業生。"

## [5] ""

注意事項:

對於被編碼保護的資料(如國外yellow.local.ch,email被編碼保護了。需要用 decodeuricomponent函式反編譯。)

xpath語句對html_nodes適用。但是它好像是全域性語句。。就是如果用div[1]//span[4]取數的話,它直接就只出全域性的那個結果。。。

如取數,可以用li.da或者li.daew取數,兩者等價

正規表示式很有用!!尤其是對網頁資料,某些不會寫,或者技術高超不願意被我們爬蟲的工程師,用rvest去抓資料,會抓到一堆堆亂碼= =這幾天練習下來感受到了無盡惡意

中文,html(data,encoding='utf-8')還有iconv(data,'utf-8','gbk')可以有效避免大部分亂碼。但是r對中文支援真的很渣。

rvest對於靜態抓取很方便!但是對於指令碼訪問的網頁,還需要繼續學習rcurl包。備查資料如下:

等學會了再寫總結。

以及最後的最後,近期研究重點應該是it金融?受張丹老師的兩條**與r語言)鼓舞好大!我覺得學r嘛,用到實處才是重要的!玩爬蟲玩的太開心都沒跟jhu的課了。。。。

以後可以嘗試按照自己和老爸的看**習慣開發出類似的選股模型來~~

以及,我之前有看到有個牛人用python爬了各大**程式設計師相關的招聘資訊:程式設計師**codejob 有興趣的可以去看看。

我的部落格 

部落格總目錄:

R爬蟲實戰1(學習) 基於RVEST包

這裡用hadley wickham開發的rvest包。再次給這位矜矜業業開發各種好用的r包的大神奉上膝蓋。查閱資料如下 rvest的github rvest自身的幫助文件 言歸正傳,拿了幾個網頁練手。包括 對拉勾網爬了一下蟲,還嘗試了對國外某黃頁爬蟲,對ebay使用者評價爬蟲分析其賣家賣的東西主要在...

R 語言爬蟲 rvest 包實戰鏈家爬蟲

rvest包簡介 rvest包是hadley wickham大神開發的乙個專門用於網路資料抓取的r語言包,目前的發行版本為0.3.2,關於rvest包的描述以及用法可參考rvest幫助文件,花上一點時間閱讀幫助文件,相信你就可以寫出自己的爬蟲了。help package rvest rvest幫助文...

BOSS直聘網爬蟲初嘗試

1 需求分析 通過搜尋職位關鍵字,來獲取該職位的招聘資訊,資訊包括 崗位的名稱,招聘的公司,公司所在地,工作經驗要求,學歷要求 2 技術分析 語言 python 所需要的類庫 requests beautifuisoup 3 詳細分析 在boss直聘 搜尋框上搜尋關鍵字 j a 圖1 搜尋關鍵字 觀...