自动化数据抓取技术(II): RSelenium

学习材料

RSelenium包在CRAN的官方文档

常用的操作,可以参考中文教程

经常碰到的爬虫场景和处理方法

下面列出一些常碰到的爬虫场景和处理办法。

正确关闭Rselenium server

remDr$closeServer()
remDr$close()
rm(remDr)
rm(driver)
gc()

在浏览器窗口之间进行自由切换

具体见github issue社区互动 参考

myswitch <- function (remDr, windowId) 
{
  qpath <- sprintf("%s/session/%s/window", remDr$serverURL, 
                   remDr$sessionInfo[["id"]])
  remDr$queryRD(qpath, "POST", qdata = list(handle = windowId))
}

Sys.sleep(1)
windows_handles <- remDr$getWindowHandles()
Sys.sleep(1)
#remDr$switchToWindow(windows_handles[[2]])

myswitch(remDr = remDr, windowId = windows_handles[[2]])

鼠标相关操作

  1. 移动鼠标到指定位置 并点击
xpath_submit <- "//*[@id='loginform-1']/div[4]/input"
webelm <- remDr$findElement(using = "xpath", value = xpath_submit)
loc <- remDr$mouseMoveToLocation(webElement = webelm)
remDr$click(1)

选择不可见的勾选框

参考网络问答

对于一些网站,有时候存在肉眼不可见的网页元素。具体图示如下:

一个示例

Figure 1: 一个示例

这时,我们需要使用remDr$executeScript()函数来执行java操作。

webelem <- remDr$findElement(using = "xpath", "//*[@id='ztcountryCode_273_check']")

remDr$executeScript("arguments[0].click()", args = list(webelem))

日历和下拉菜单操作

一个比较全的示例

悬置鼠标唤出下级菜单

见示例

Hu Huaping
Hu Huaping
PhD on Agricultural Economic and Management

My research interests include Data Science, Statistics, Agricultural Economics and Management.

Related