javascript - 使用 RSelenium 进行 Web 抓取:findElement 不返回任何内容
问题描述
我是网络抓取的新手,并且一直在尝试使用 RSelenium(作为 rvest 的替代品)收集信息,因为我感兴趣的一些网站使用 JavaScript。但是,当我使用下面的代码时, findElement() 函数什么也不返回。
library(RSelenium)
driver <- rsDriver(browser=c("chrome"), chromever="81.0.4044.138")
remote_driver <- driver$client
remote_driver$navigate("https://www.gucci.com/uk/en_gb/ca/decor-c-decor")
p <- remote_driver$findElement(using = "xpath", "//span[@class = 'sale']")
product <- p$getElementText()
product
xpath 似乎是正确的,有什么想法吗?
解决方案
我不确定这是否是最好的方法,但您可以使用 RSelenium 获取页面源(包括 Javascript 元素),然后使用 rvest 提取这些元素。
library(dplyr)
library(rvest)
elemrvest <- remote_driver$getPageSource()[[1]]
df <- tibble(Products = elemrvest %>%
read_html() %>%
html_nodes(xpath = "//div[@class = 'product-tiles-grid-item-info']/h2") %>%
html_text(),
Prices = elemrvest %>%
read_html() %>%
html_nodes(xpath = "//span[@class = 'sale']") %>%
html_text())
推荐阅读
- ios - 使用 Flutter 包 firebase_messaging 在 iOS 上无法使用后台通知
- javascript - 如何取消保护 Firebase 功能中的一条路线
- javascript - 在反应中整合动态数据
- r - 混合效应模型,lmer
- amazon-web-services - 如何为 AWS 账户计费设置截止时间?
- javascript - 使元素无法按日期访问(用于出现日历)
- parsing - 递归下降解析语法
- post - 向 Asp.Net Core Web Api(版本 3.1)发送 POST 请求时,我从 POSTMAN 获得状态 500 代码
- python - 如何在 Tkinter 中将底部标签移动到最右边?
- f# - 在 Seq 的所有配对上测试对称函数的有效方法