RSelenium使用
近期在準備一門本科課程,內容主要和科技論文寫作有關。原本這門課程的內容和R語言沒有什么太大的關系,學院提出新的要求,即學生通過這門課程可以完成科學研究的選題,數據收集、整理、分析,學術報告的撰寫等。本科生能夠獲取數據的途徑有限,網絡數據應該是非常重要的一個選擇。因此,我就著手學習一些網絡爬蟲的知識,以便讓學生學以致用。之所以選擇用R,因為自己是R的忠實粉絲。
在這里簡單記錄一些網絡爬蟲學習過程遇到的問題。
在R上面一般用得比較多的是rvest,這個是一種很簡單的R下的爬蟲框架,大多數人都拿它來爬蟲極其簡單的html頁面。selenium作用是模擬訪問網頁的行為,結合rvest可以爬取動態網頁的內容。在使用selenium的過程,首先要學位驅動的配置,這也是我學習中遇到的最大的坑。
最初我按照教程中binman包,自動在C盤配置安裝了chromedriver,geckodriver和selenium-server-standalone-x.xx.x.jar。
driver <- rsDriver(chromever = "98.0.4758.48", browser = "chrome", port = 4837L)
通過上述命令加載瀏覽器一切正常,然而(敲黑板)第二天總是報錯,提示無法鏈接服務器server=unknow。網上查了大量的資料也沒有辦法解決這樣的問題。無奈只好手動配置各種驅動文件。最后問題得到圓滿的解決。
網頁瀏覽器驅動要查找瀏覽器的版本再下載,我安裝的驅動版本如下:
chromedriver放至C:\Program Files\Google\Chrome\Application,添加至環境path
geckodriver放至D:\Program Files\Mozilla Firefox,添加至環境path
selenium-server-standalone-3.9.1.jar。
在CMD中定位到驅動安裝的目錄,運行selenium驅動
#安裝java環境
#
java -jar selenium-server-standalone-3.9.1.jar #可用的selenium文件,運行過程中不要關閉
browser <- remoteDriver(
browserName = "chrome", #firefox
remoteServerAddr = "localhost",
port = 4444L #默認端口,可在selenium修改
)
#browser <- driver$client
#server <- driver$server
browser$open()
#成功打開瀏覽器,模擬瀏覽行為