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


   在R實現pm2.5地圖數據展示文章中,使用rvest包實現了靜態頁面的數據抓取,然而rvest只能抓取靜態網頁,而諸如ajax異步加載的動態網頁結構無能為力。在R語言中,爬取這類網頁可以使用RSelenium包和Rwebdriver包。

  RSelenium包和Rwebdriver包都是通過調用Selenium Server來模擬瀏覽器環境。其中,Selenium是一個用於網頁測試的Java開源軟件,它可以模擬瀏覽器的點擊、滾動、滑動以及文字輸入等操作。因為Selenium是Java程序,因此在使用RSelenium包和Rwebdriver包之前必須為計算機設置Java環境。以下是使用RSelenium包和Rwebdriver包的前期准備步驟:


一、RSelenium包和Rwebdriver包的下載安裝

  RSelenium包從CRAN直接下載安裝,Rwebdriver包則需要從github上下載,下載過程參考install_github無法安裝 Rwebdriver包的解決方法

二、Java環境的設置

  理論上講,調用Java程序安裝JRE(Java Runtime Environment)即可,但本文推薦安裝JDK(Java Development Kit),JDK中包含JRE模塊,且網上找到的Java環境變量設置教程多針對JDK。

  1、 JDK的下載

  本文檔中下載最新版的jdk-11.0.1_windows-x64_bin.zip

  2、 JDK的安裝

  由於下載的是無需安裝的版本,直接將文件解壓出來,放到D:\Program Files\java目錄下即可

  3、環境變量的設置(可參考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,不報錯即表示安裝成功。

  

  

三、selenium以及瀏覽器驅動的下載和運行

  1、下載selenium,網址為https://www.seleniumhq.org/download/

  下載最新版本,也可以到http://selenium-release.storage.googleapis.com/index.html 下載之前的版本。

   2、下載瀏覽器驅動

  Chrome驅動:http://npm.taobao.org/mirrors/chromedriver

  Firefox驅動:http://github.com/mozilla/geckodriver/releases

  下載時要注意自己瀏覽器的版本,如果使用Chrome瀏覽器可參考selenium之chromedriver與chrome版本映射表(更新至v2.34)

   在本環境中下載的是最新時間的v2.44版本

  

  3、打開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不要關閉)。

  

 

四、至此所有前期准備就都已完成,可以使用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包的前期准備


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM