使用 RSelenium 导航到正确的 URL:引号问题

问题描述 投票:0回答:1

使用 RSelenium 导航到 URL 中包含引号的网页时,我遇到了一个不寻常的问题。当我尝试直接访问页面时,内容不会加载。但是,如果我首先访问了一个不正确的 URL,然后导航到所需的页面,则内容加载成功。只有下面代码的版本 5 似乎可以按预期工作。

如何在不先访问错误的URL的情况下直接访问正确的页面?

加载硒

rD <- RSelenium::rsDriver(browser = "chrome", port = 4444L, chromever = NULL, verbose = FALSE)
remDr <- rD[["client"]]

版本 1 - 香草尝试(未能加载内容)

url <- "https://www.sec.gov/edgar/search/#/q=%2522apple%2522&dateRange=custom&startdt=2017-01-01&enddt=2017-12-31"
remDr$navigate(url)

版本 2 - 再次尝试

URLencode
(加载内容失败)

url <- "https://www.sec.gov/edgar/search/#/q=%2522apple%2522&dateRange=custom&startdt=2017-01-01&enddt=2017-12-31"
url <- URLencode(url, reserved = TRUE)
remDr$navigate(url)

版本 3 - 尝试转义引号(无法加载内容)

url <- 'https://www.sec.gov/edgar/search/#/q=\"apple\"&dateRange=custom&startdt=2017-01-01&enddt=2017-12-31'
remDr$navigate(url)

版本 4 - 尝试使用双反斜杠而不是单个反斜杠(部分成功,但加载了不正确的内容)

url <- 'https://www.sec.gov/edgar/search/#/q=\\"apple\\"&dateRange=custom&startdt=2017-01-01&enddt=2017-12-31'
remDr$navigate(url)

版本 5 - 首先使用版本 4 加载不正确的内容,然后重试并正确加载内容(成功)

# step 1 load incorrect content
url <- 'https://www.sec.gov/edgar/search/#/q=\\"apple\\"&dateRange=custom&startdt=2017-01-01&enddt=2017-12-31'
remDr$navigate(url)

# step 2 now content loads correctly for some reason
url <- 'https://www.sec.gov/edgar/search/#/q="apple"&dateRange=custom&startdt=2017-01-01&enddt=2017-12-31'
remDr$navigate(url)

编辑

我在这里添加了另一个失败的版本:

版本 6 - 尝试使用 javascript 执行(无法加载内容)

url <- 'https://www.sec.gov/edgar/search/#/q="apple"&dateRange=custom&startdt=2017-01-01&enddt=2017-12-31'
remDr$executeScript(paste("window.location.href='", url, "';", sep=""))

另外,重要的是要提到版本4中的内容是不正确的。当您单击版本 4 中的任何数据时,术语“苹果”不会在文档中突出显示。但是,在版本 5 中,当您单击文档时,“apple”会突出显示。此外,版本 4 中的搜索表单包含反斜杠,而版本 5 中仅包含引号。

r rselenium
1个回答
0
投票

我尝试了以下代码,它似乎给出了与您提出的方法相同的结果 #5

library(RSelenium)
library(rvest)
url <- "https://www.sec.gov/edgar/search/#/q=%2522apple%2522&dateRange=custom&startdt=2017-01-01&enddt=2017-12-31"
shell('docker run -d -p 4446:4444 selenium/standalone-firefox')
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4446L, browserName = "firefox")
remDr$open()
remDr$navigate(url)
© www.soinside.com 2019 - 2024. All rights reserved.