R語言:VOL1-爬取動態(tài)網(wǎng)頁的方法

其實(shí)想寫B(tài)站專欄也有一段時間了,草稿箱里還躺著幾篇寫了一半的讀書報告,但是萬萬沒想到,寫的第一篇專欄竟然是關(guān)于編程的2333333
也很偶然,正好有個朋友問能不能幫忙爬取數(shù)據(jù),但是我沒有爬取過動態(tài)網(wǎng)頁的數(shù)據(jù),就根據(jù)網(wǎng)上的教程整理了一下,然后增加了我自己爬取的實(shí)例。

一、R語言爬取動態(tài)網(wǎng)頁的前期準(zhǔn)備
R語言爬取動態(tài)網(wǎng)頁需要用到的包可以使用"RSelenium"或者"Rwebdriver",這兩個包都可以進(jìn)行操作,是通過調(diào)用Selenium Server來模擬瀏覽器環(huán)境。
Selenium是一個用于網(wǎng)頁測試的Java開源軟件,它可以模擬瀏覽器的點(diǎn)擊、滾動、滑動以及文字輸入等操作[1]。
因?yàn)镽Selenium可以直接在CRAN下載并安裝(Rwebdriver包需要從gethub上下載并安裝,相對來說比較麻煩),因此我使用的是RSelenium包進(jìn)行動態(tài)網(wǎng)頁的抓取。
install.packages("RSelenium")? #安裝RSelenium包
library(RSelenium)? #加載RSelenium包
但是加載完RSelenium包之后,并不能直接使用,還需要添加相應(yīng)的輔助的條件:
安裝JAVA并進(jìn)行環(huán)境配置
安裝Selenium(運(yùn)行Selenium需要java且配置好環(huán)境變量)
安裝瀏覽器與驅(qū)動組件
1.1 JAVA的安裝與環(huán)境配置
目前網(wǎng)絡(luò)上的教程大部分都是推薦安裝JDK(Java Development Kit),但是實(shí)際上我們安裝JRE(Java Runtime Environment)就足夠用了。因?yàn)槲易约旱碾娔X上有現(xiàn)成的。
JAVA的安裝可以去其官方網(wǎng)站下載:
https://www.java.com/zh_CN/download/win10.jsp【中文網(wǎng)站但只能下載window版的,行吧········】
https://www.java.com/en/download/manual.jsp【英文網(wǎng)站可以下載所有的】
下載完成后一步步的按照默認(rèn)安裝就可以了!?。?!
環(huán)境變量配置:
網(wǎng)絡(luò)上的很多教程都教給大家來配置環(huán)境變量,但是我在window10上下載安裝完成JAVA之后實(shí)際測試不需要配置環(huán)境變量就可以了。
大家可以在命令提示符【win+R打開運(yùn)行窗口,輸入cmd,點(diǎn)擊確定】界面,分別輸入以下命令:
java? ? 【查找java的命令是不是存在】
java -version? ? 【查找java的版本】
javac? ? ?【注意javac是JDK特有的,如果你和我一樣安裝的是JRE就不需要】
如果以上命令都有正常的反應(yīng)而不是提示命令不存在或者報錯,那么說明JAVA就安裝好了,不需要進(jìn)行下面的環(huán)境變量的配置了,如果不行,那么按照以下的要求配置環(huán)境變量:
配置環(huán)境變量JAVA_HOME,【就是你安裝JAVA的地址】

配置環(huán)境變量PATH,【一般計算機(jī)上已經(jīng)有PATH的環(huán)境變量了,只需要給他增加就好了】
%JAVA_HOME%\bin
實(shí)際上就是連接到JAVA的二進(jìn)制文件目錄
網(wǎng)絡(luò)上有很多教程說增加的環(huán)境變量為如下:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
分號代表一個新的目錄,但是實(shí)際上是不需要的,因?yàn)闆]有jre這個文件夾,可能是安裝JDK帶來的問題

配置環(huán)境變量CLASS_PATH
變量值 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

三個變量設(shè)置完成后,打開cmd(命令提示符,用Windows的搜索搜cmd即可找到),輸入javac,不報錯即表示安裝成功。
1.2 安裝Selenium
Selenium的下載地址:https://selenium.dev/
你進(jìn)入網(wǎng)址之后看到的界面是這樣的:

下載最新版的Selenium就好了。
目前最新版的下載下來名稱為:selenium-server-standalone-3.141.59.jar
然后使用命令提示符【win+R打開運(yùn)行窗口,輸入cmd,點(diǎn)擊確定】,進(jìn)入selenium存放的路徑,然后輸入如下命令:
java -jar selenium-server-standalone-3.141.59.jar
開啟selenium服務(wù)

出現(xiàn):Selenium Server is up and running on port XXXX代表運(yùn)行成功。
默認(rèn)運(yùn)行的port是4444。
如果出現(xiàn)報錯可能是你的port 4444處于被占用的狀態(tài)
請在運(yùn)行后面的程序務(wù)必保持selenium在運(yùn)行狀態(tài)【即不要關(guān)閉這個窗口】,否則后面的R程序并不能正常運(yùn)行
1.3?安裝瀏覽器與驅(qū)動組件
我在這里推薦Firefox,當(dāng)然Chrome也是可以的?!綬Selenium中支持的瀏覽器有5種:?chrome、firefox、htmlunit、internet?explorer、iphone】。主要原因是Chrome你在國內(nèi)不好安裝,你是無法正常登陸其官網(wǎng)去下載Chrome瀏覽器的【但是我在某企鵝的電腦管家的軟件管理中找到了Chrome瀏覽器的安裝,我沒試,大家看可以去試試能不能用~】。
在安裝完Firefox瀏覽器之后,需要安裝GeckoDriver用于驅(qū)動Firefox。
下載地址為:https://github.com/mozilla/geckodriver
然后請將下載后的文件安裝在Firefox瀏覽器的安裝路徑下面
Firefox默認(rèn)安裝路徑是:C:\Program Files\Mozilla Firefox
環(huán)境變量的配置如下圖中倒數(shù)第二變量

如果以上都操作完畢,我們就可以運(yùn)行愉快的編寫R語言程序了。

二、R語言爬取動態(tài)網(wǎng)頁的實(shí)例
我們要爬取的是騰訊公益網(wǎng)站的網(wǎng)頁。我們爬取的是項目狀態(tài)為已經(jīng)結(jié)束的項目的信息。

相應(yīng)的代碼如下:
【因?yàn)锽博不能插代碼塊,所以我就插圖片啦】
說明一下由于是第一版寫的程序,所以后面發(fā)現(xiàn)了一個問題,就是雖然騰訊公益的已經(jīng)結(jié)束的項目顯示有1448頁,但是實(shí)際上當(dāng)你進(jìn)入第100頁以后,所有的內(nèi)容就都和第100頁相同了,由于我只是來學(xué)習(xí)動態(tài)網(wǎng)頁的爬取方法所以在成功之后就沒有對代碼進(jìn)行修改~~~~~~
因此以下代碼只能爬取1-100頁的基本信息。

爬去完成后的數(shù)據(jù)存在outdata數(shù)據(jù)框中:
結(jié)果示例

以上就是本期教程的所有內(nèi)容啦,希望對大家有所幫助!

3. 參考的相關(guān)教程:
[1] R語言爬取動態(tài)網(wǎng)頁:使用RSelenium包和Rwebdriver包的前期準(zhǔn)備? https://blog.csdn.net/weixin_40628687/article/details/78971934
[2] R語言數(shù)據(jù)收集實(shí)例(一)——動態(tài)網(wǎng)頁爬取 https://zhuanlan.zhihu.com/p/28108329
[3]?https://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html
[4]?https://www.cnblogs.com/mxly/p/10156517.html
[5]?GeckoDriver的安裝和使用?https://www.cnblogs.com/xuyingzhong/p/9345487.html

如果對你有幫助記得點(diǎn)個贊哦,親?。。。。。?!