R語言爬取動態網頁之環境準備

   在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])

 

參考連接:R語言爬取動態網頁:使用RSelenium包和Rwebdriver包的前期準備

相關文章
相關標籤/搜索