R语言爬虫:RSelenium包常用函数

文字太多,一眼找不到要找的内容? Ctrl+F 即可查找~


  使用RSelenium包控制浏览器主要依靠remoteDriver系列函数:

  remoteDriver( remoteServerAddr,

         port,

         browserName,

         path,

         version,

         platform,

         javascript,

         nativeEvents,

         serverURL,

         sessionInfo)

  其中,参数remoteServerAddr,表示远程服务器的IP地址,默认值是本机地址,是character型

  参数port,表示远程服务器连接端口,是numeric型

  参数browserName,表示浏览器名称,可以取chrome、firefox、htmlunit、internetexplorer或iphone,是character型

  参数path,表示远程服务器上命令的基本URL路径前缀,默认值是“/ wd / hub”;

  参数version,表示浏览器版本,是character型

  参数platform,表示浏览器运行的系统,可以是WINDOWS、XP、VISTA、MAC、LINUX或UNIX,是character型

  参数javascript,表示会话是否支持在当前页面的上下文中执行用户提供的JavaScript,是logical型

  参数nativeEvents,表示会话是否支持本地事件,是logical型

  参数serverURL,表示JSON请求发送到的远程服务器的URL,是character型

  参数sessionInfo,表示会话相关信息,是list型

  通常情况下,只要设置browserName就可以对浏览器进行操作。

library(RSelenium)
remDr <- remoteDriver(browserName ="chrome") 

  remoteDriver函数的返回值是一系列函数,即remDr是一系列函数,先将主要的操作总结如下:

  1、打开浏览器、关闭浏览器

# 打开浏览器
remDr$open()
# 关闭浏览器
remDr$quit()  # 直接退出
remDr$close()  # close用于关闭当前会话,也可以用作关闭浏览器

  2、打开网页、关闭网页

# 打开网页
url <- 'http://www.baidu.com'
remDr$navigate(url)
# 关闭网页
remDr$closeWindow()

  3、定位元素

  定位到网页上某个元素需要使用函数findElement(using, value),其中using可以取"xpath", "css selector", "id", "name", "tag name", "class name", "link text"或"partial link text",value是其相应的值。

  4、移动鼠标

  移动鼠标使用函数mouseMoveToLocation(x = NA_integer_, y = NA_integer_, webElement = NULL), 其中x和y是坐标值,webElement是移向的网页元素。

  5、单击

  单击使用函数click(buttonId = 0),其中buttonId为0表示单击左键,为1表示单击滚动条,为2表示单击右键。

  但是通常我们单击需要单击在网页的某个元素上,要定位到这个元素需要使用函数findElement(using, value),其中using可以取"xpath", "css selector", "id", "name", "tag name", "class name", "link text"或"partial link text",value是其相应的值。当然,单击某个元素也可以使用clickElement()函数。


# 以点击百度的“百度一下”按钮为例
# 打开网页
url <- 'http://www.baidu.com'
remDr$navigate(url)
# 定位
xpath <- '//*[@id="su"]'
btn <- remDr$findElement(using = 'xpath', value = xpath)
# 移动鼠标至该元素
remDr$mouseMoveToLocation(webElement = btn)
# 单击
remDr$click()

  另一种方法(使用clickElement函数):

# 打开网页
url <- 'http://www.baidu.com'
remDr$navigate(url)
# 定位
xpath <- '//*[@id="su"]'
btn <- remDr$findElement(using = 'xpath', value = xpath)
# 单击
btn$clickElement()

  

  6、双击

  双击使用函数doubleclick(buttonId = 0),用法与单击一样。

  7、在文本框输入文本

  函数sendKeysToElement(sendKeys)用于在指定元素中输入文本,sendKeys必须是list型数据。在网页输入文本的步骤大致为,首先找到文本框元素的位置,然后输入文本。另外一个函数sendKeysToActiveElement(sendKeys)用于在当前活动元素中输入文本。

## 以百度文本框为例
# 打开网页
url <- 'http://www.baidu.com'
remDr$navigate(url)
# 定位文本框
xpath <- '//*[@id="kw"]'
btn <- remDr$findElement(using = 'xpath', value = xpath)
# 输入文本
text <- list('偷闲阁CSDN')
btn$sendKeysToElement(text)
# 输入文本并按回车
text <- list('偷闲阁CSDN', key = 'enter')
btn$sendKeysToElement(text)

  8、窗口最大化

  

remDr$maxWindowSize()
  9、截图

  截图使用screenshot(display = FALSE, useViewer = TRUE, file = NULL)函数,其中file是截图后存放的路径,截的图像是PNG格式。

remDr$screenshot()




  RSelenium包的准备工作请参考R语言爬取动态网页:使用RSelenium包和Rwebdriver包的前期准备。抓取示例请参考R语言:RSelenium包爬取动态网页。


参考文献:

RSelenium手册

你可能感兴趣的:(R语言,网络爬虫)