在R實現pm2.5地圖數據展現文章中,使用rvest包實現了靜態頁面的數據抓取,然而rvest只能抓取靜態網頁,而諸如ajax異步加載的動態網頁結構無能爲力。在R語言中,爬取這類網頁可使用RSelenium包和Rwebdriver包。html
RSelenium包和Rwebdriver包都是經過調用Selenium Server來模擬瀏覽器環境。其中,Selenium是一個用於網頁測試的Java開源軟件,它能夠模擬瀏覽器的點擊、滾動、滑動以及文字輸入等操做。由於Selenium是Java程序,所以在使用RSelenium包和Rwebdriver包以前必須爲計算機設置Java環境。如下是使用RSelenium包和Rwebdriver包的前期準備步驟:java
1、RSelenium包和Rwebdriver包的下載安裝git
RSelenium包從CRAN直接下載安裝,Rwebdriver包則須要從github上下載,下載過程參考install_github沒法安裝 Rwebdriver包的解決方法github
2、Java環境的設置web
理論上講,調用Java程序安裝JRE(Java Runtime Environment)便可,但本文推薦安裝JDK(Java Development Kit),JDK中包含JRE模塊,且網上找到的Java環境變量設置教程多針對JDK。ajax
一、 JDK的下載chrome
本文檔中下載最新版的jdk-11.0.1_windows-x64_bin.zipnpm
二、 JDK的安裝windows
因爲下載的是無需安裝的版本,直接將文件解壓出來,放到D:\Program Files\java目錄下便可api
三、環境變量的設置(可參考Java環境變量設置)
需設置JAVA_HOME,CLASS_PATH,PATH三個環境變量
JAVA_HOME
D:\Program Files\java\jdk-11.0.1
CLASSPATH
%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
PATH
%JAVA_HOME%\bin
三個環境變量設置好之後,打開cmd,輸入javac,不報錯即表示安裝成功。
3、selenium以及瀏覽器驅動的下載和運行
一、下載selenium,網址爲https://www.seleniumhq.org/download/
下載最新版本,也能夠到http://selenium-release.storage.googleapis.com/index.html 下載以前的版本。
二、下載瀏覽器驅動
Chrome驅動:http://npm.taobao.org/mirrors/chromedriver
Firefox驅動:http://github.com/mozilla/geckodriver/releases
下載時要注意本身瀏覽器的版本,若是使用Chrome瀏覽器可參考selenium之chromedriver與chrome版本映射表(更新至v2.34)。
在本環境中下載的是最新時間的v2.44版本
三、打開cmd運行selenium和瀏覽器驅動,好比我使用的是Chrome瀏覽器,所以在cmd中輸入java -Dwebdriver.chrome.driver="E:\Selenium\chromedriver.exe" -jar E:\Selenium\selenium-server-standalone-3.141.59.jar
如出現下圖所示界面,則啓動成功(在R語言調用RSelenium包和Rwebdriver包時,cmd不要關閉)。
4、至此全部前期準備就都已完成,可使用RSelenium包和Rwebdriver包了。
以RSelenium包爲例
library(RSelenium) remDr <- remoteDriver( browserName = "chrome", remoteServerAddr = "localhost", port = 4444 ) remDr$open() url <- 'https://www.google.com/' remDr$navigate(url)
能夠看到「Chrome正受到自動測試軟件的控制」字樣。
此時再使用rvest包對網頁進行抓取,抓到的就是通過瀏覽器渲染後的頁面:
library(rvest) webpage <- read_html(remDr$getPageSource()[[1]][1])