RSelenium使用
近期在準(zhǔn)備一門本科課程,內(nèi)容主要和科技論文寫作有關(guān)。原本這門課程的內(nèi)容和R語言沒有什么太大的關(guān)系,學(xué)院提出新的要求,即學(xué)生通過這門課程可以完成科學(xué)研究的選題,數(shù)據(jù)收集、整理、分析,學(xué)術(shù)報(bào)告的撰寫等。本科生能夠獲取數(shù)據(jù)的途徑有限,網(wǎng)絡(luò)數(shù)據(jù)應(yīng)該是非常重要的一個(gè)選擇。因此,我就著手學(xué)習(xí)一些網(wǎng)絡(luò)爬蟲的知識(shí),以便讓學(xué)生學(xué)以致用。之所以選擇用R,因?yàn)樽约菏?strong>R的忠實(shí)粉絲。
在這里簡單記錄一些網(wǎng)絡(luò)爬蟲學(xué)習(xí)過程遇到的問題。
在R上面一般用得比較多的是rvest,這個(gè)是一種很簡單的R下的爬蟲框架,大多數(shù)人都拿它來爬蟲極其簡單的html頁面。selenium作用是模擬訪問網(wǎng)頁的行為,結(jié)合rvest可以爬取動(dòng)態(tài)網(wǎng)頁的內(nèi)容。在使用selenium的過程,首先要學(xué)位驅(qū)動(dòng)的配置,這也是我學(xué)習(xí)中遇到的最大的坑。
最初我按照教程中binman包,自動(dòng)在C盤配置安裝了chromedriver,geckodriver和selenium-server-standalone-x.xx.x.jar。
driver <- rsDriver(chromever = "98.0.4758.48", browser = "chrome", port = 4837L)
通過上述命令加載瀏覽器一切正常,然而(敲黑板)第二天總是報(bào)錯(cuò),提示無法鏈接服務(wù)器server=unknow。網(wǎng)上查了大量的資料也沒有辦法解決這樣的問題。無奈只好手動(dòng)配置各種驅(qū)動(dòng)文件。最后問題得到圓滿的解決。
網(wǎng)頁瀏覽器驅(qū)動(dòng)要查找瀏覽器的版本再下載,我安裝的驅(qū)動(dòng)版本如下:
chromedriver放至C:\Program Files\Google\Chrome\Application,添加至環(huán)境path
geckodriver放至D:\Program Files\Mozilla Firefox,添加至環(huán)境path

selenium-server-standalone-3.9.1.jar。
在CMD中定位到驅(qū)動(dòng)安裝的目錄,運(yùn)行selenium驅(qū)動(dòng)
#安裝java環(huán)境
#
java -jar selenium-server-standalone-3.9.1.jar #可用的selenium文件,運(yùn)行過程中不要關(guān)閉
browser <- remoteDriver(
browserName = "chrome", #firefox
remoteServerAddr = "localhost",
port = 4444L #默認(rèn)端口,可在selenium修改
)
#browser <- driver$client
#server <- driver$server
browser$open()
#成功打開瀏覽器,模擬瀏覽行為