- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在抓取一些网页,我注意到 rvest(read_html,然后 html_text)提供的结果与 RSelenium(getPageSource())提供的结果不同。
更具体地说,当涉及下拉菜单时,使用 html_text 只会提供选项的名称,而使用 RSelenium 则可以获得选择后将定向到的页面的 URL。
我的问题是:(1)为什么会出现这种差异,差异的本质到底是什么? (2) 有没有一种方法可以获得与 RSelenium 相同的源文本提取,但使用更快的方法,例如 rvest 包?
根据 rvest vs RSelenium results for text extracting 的建议,我尝试使用 webdriver(一种 PhantomJS 实现) ,并且它们的 getSource 函数确实提供了与 RSelenium 相同的结果。然而,虽然这比 RSelenium 快,但它仍然比 rvest 慢得多。
library(rvest)
library(RSelenium)
library(webdriver)
library(tictoc)
library(robotstxt)
test_url <- "https://www.bea.gov"
robotstxt::paths_allowed(test_url)
# rvest
tictoc::tic()
resultA <- html_text(read_html(test_url))
tictoc::toc()
# RSelenium
tictoc::tic()
remDr <- remoteDriver(port = 4445L, browserName = "firefox")
remDr$open()
remDr$navigate(test_url)
resultB <- remDr$getPageSource(test_url)
tictoc::toc()
# webdriver
tictoc::tic()
pjs <- run_phantomjs()
ses <- Session$new(port = pjs$port)
ses$go(test_url)
resultC <- ses$getSource()
tictoc::toc()
您可以看到 resultA 与 resultB 和 resultC 不同。更具体地说,我的重点是从“工具”一词开始,这是用于选择该网站提供的有关“工具”的不同选项卡的下拉菜单的部分。
仅显示一小块,在 rvest 中选择“BEARFACTS”是:
BEARFACTS\n \n \n
在 RSelenium 中,它类似于以下内容:
<li class=\"expanded dropdown\">\n <a href=\"https://apps.bea.gov/regional/bearfacts/\">BEARFACTS</a>\n
最佳答案
RSelenium
之间的区别和rvest
是:
RSelenium
运行真正的网络浏览器,因此它将加载网页中包含的任何 JavaScript(JavaScript 通常用于在加载初始 html 后加载其他 html 元素或数据)。rvest
不运行 javascript,因此可以更快地检索页面 html,但会错过在初始页面加载后使用 javascript 加载的任何元素。一些有用的提示:
eCaps <- list(chromeOptions = list(
args = c('--headless', '--disable-gpu', '--window-size=1280,800')
))
rD <- rsDriver(browser=c("chrome"), verbose = TRUE, chromever="78.0.3904.105", port=4447L, extraCapabilities = eCaps)
关于r - rvest::html_text 和 RSelenium::getPageSource 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57370389/
我正在尝试验证一些文本,例如在 Python、Webdriver 中使用 driver.getPageSource 的网页上的“test001”。我收到错误对象没有属性“getPageSource”:
我需要程序中给出的url的来源。但是程序只返回一些 json 数据而不是整个页面源。有什么问题?? public class selenium { public static void main(St
我正在使用此功能登录页面: public static void login() { driver.get(url); driver.findElement(By.name("userna
我正在尝试编写一段代码,用户在其中输入Python,然后按回车键,这个应用程序“Python教程教程点”位于第四页。我的逻辑是:使用 getPageSource 找到该项目并继续单击“下一步”按钮。然
我正在使用 WebDriver 和 java 来获取页面源。使用 FirefoxDriver 我试图验证页面源上的一些文本,但是当我使用 driver.getPageSource 时,它会将一些符
下面这段代码的完整含义是什么?我的意思是,哪个对象实现哪个类并使用哪个方法? driver.getPageSource().contains("Text to find"); 最佳答案 让我们一个接一
我正在尝试使用 selenium 获取页面源 String ps = driver.getPageSource(); 但是页面源里面的链接是相对的,比如 因此我无法使用此源代码,因为图像/css 未
我正在尝试使用 selenium 将指定 URL 中的源代码捕获到 HTML 文件中,但我不知道为什么,我没有获得我们从浏览器中看到的确切源代码。 下面是我在 HTML 文件中捕获源代码的 java
我是 Selenium 的新手,想知道是否有人可以指出正确的方向。 我正在尝试获取页面的页面源,但我注意到 IE 驱动程序返回了一些东西不同于 FirefoxDriver。 此外,InternetEx
在使用 selenium 时,刚才我在解析 selenium getPageSource() 方法的输出时遇到错误。firefox页面源实际的meta标签= 使用带有 selenium = 的
当我尝试显示页面的源代码时, res.json 返回空白。 Selenium 日志显示已检索到源代码。知道如何正确接收更新的页面源吗? 如果我使用其他函数(例如获取当前网址),它会返回相同的结果。 代
我正在抓取一些网页,我注意到 rvest(read_html,然后 html_text)提供的结果与 RSelenium(getPageSource())提供的结果不同。 更具体地说,当涉及下拉菜单时
如何使用 Selenium WebDriver 和 Java 查看“title”和“meta”标签之间的页面源代码? 最佳答案 加载页面后,您可以尝试 driver.getPageSource()。
如何使用带有 Java 的 Selenium WebDriver 查看“title”和“meta”标签之间的页面源代码? 最佳答案 您可以在加载页面后尝试 driver.getPageSource()
我是一名优秀的程序员,十分优秀!