大概5年前稍稍研究过Rselenium这个包,写过几行代码,至今有很长时间没有用了。偶尔需要用httr或者revst也能搞定。
最近因为需要批量完成选题,又祭出Rselenium折腾了一下。顺便把部分基础的代码贴着供大家参考。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| library(RSelenium)
library(httr)
library(magrittr)
library(rvest)
library(stringr)
library(tidyverse)
library(purrr)
# 路径需要根据各自情况修改
system("java -Dwebdriver.chrome.driver=\"D:/C-Hub/chromedriver.exe\" -jar \"D:/C-Hub/selenium-server-standalone-3.9.1.jar\"",wait = FALSE,invisible = FALSE)
remDr <- remoteDriver(remoteServerAddr = "localhost"
, port = 4444
, browserName ="chrome")
url <- "http://xxx***xxx.com"
remDr$open(silent = T)
remDr$navigate(url = url)
|
需要注意的是,国内可能无法访问selenium API的网址无法自动下载程序文件,需事先配置好“chromedriver”、“selenium-server-standalone”两个文件。我这边是直接丢到项目根文件夹下。
如果没有特殊情况的话,运行上面的代码可以看到程序会打开chrome浏览器开启调试状态,并跳转到指定的URL。后续的工作要怎么做需要根据各自的需求而写代码。简单来说就是:
- 根据CSS 或者 XPath定位网页位置,获取所需的信息(文字、链接、图片等)。
1
| PageSource = remDr$getPageSource() %>% unlist() %>% read_html() %>% html_nodes(xpath = "//*[@id=\"answer\"]") %>% html_text()
|
- 根据CSS 或者 XPath定位网页位置,模拟鼠标行为。
1
2
| webElem <- remDr$findElement(using = "xpath", value = "/html/body/div[1]/div/div[3]/div[1]/div[6]/a[2]")
webElem$clickElement()
|
对于常规的页面来说,还是比较简单的。国内对于爬虫还是比较敏感,鉴于安全考虑,整个源码就不贴出来了,只是从技术从面探讨Rselenium使用的思路。
感谢您的关注!来选个表情,或者留个评论吧!