You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用RSelenium访问含引号URL的问题:如何直接加载正确内容

问题:RSelenium访问含引号的SEC Edgar搜索URL直接加载失败,仅先访问错误URL再跳转可行

在使用RSelenium访问包含引号的SEC Edgar搜索URL时,直接访问目标页面会出现内容加载失败的情况,但先访问一个错误格式的URL再导航到正确URL,内容就能成功加载(仅版本5代码有效)。需要找到无需先访问错误URL,直接访问正确页面的方法。

加载Selenium初始化代码

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)

注:此版本加载的内容存在错误——点击数据时文档中的"apple"不会高亮,且搜索表单包含多余反斜杠。

版本5 - 先访问错误URL再跳转正确URL(成功)

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

# step 2 跳转正确URL,内容加载正常
url <- 'https://www.sec.gov/edgar/search/#/q="apple"&dateRange=custom&startdt=2017-01-01&enddt=2017-12-31'
remDr$navigate(url)

注:此版本中点击文档时"apple"会高亮,搜索表单仅包含引号,内容正常。

版本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=""))

解决方案:模拟手动搜索流程(无需先访问错误URL)

直接访问带参数的URL失败,大概率是因为页面的JavaScript尚未完成初始化就解析了URL中的hash参数,导致无法正确处理带引号的查询条件。可以通过模拟手动搜索的方式绕过这个问题:

# 1. 先访问SEC Edgar搜索首页,等待页面完全加载
remDr$navigate("https://www.sec.gov/edgar/search/")
# 等待搜索框加载完成(可根据实际情况调整等待时间)
Sys.sleep(3)

# 2. 定位搜索输入框,输入带引号的关键词
search_box <- remDr$findElement(using = "css selector", value = "#search-term")
search_box$sendKeysToElement(list('"apple"'))

# 3. 设置日期范围为自定义
date_range_dropdown <- remDr$findElement(using = "css selector", value = "#date-range-select")
date_range_dropdown$click()
custom_option <- remDr$findElement(using = "css selector", value = "#date-range-select option[value='custom']")
custom_option$click()

# 4. 填写开始和结束日期
start_date_input <- remDr$findElement(using = "css selector", value = "#start-date")
start_date_input$clearElement()
start_date_input$sendKeysToElement(list("2017-01-01"))

end_date_input <- remDr$findElement(using = "css selector", value = "#end-date")
end_date_input$clearElement()
end_date_input$sendKeysToElement(list("2017-12-31"))

# 5. 提交搜索
search_button <- remDr$findElement(using = "css selector", value = "#search-button")
search_button$click()

# 等待搜索结果加载完成
Sys.sleep(5)

替代方案:先加载首页再修改URL Hash

如果希望继续使用URL参数的方式,可以先加载首页,等页面JS初始化完成后,再修改location.hash来触发搜索:

# 1. 访问搜索首页,等待初始化完成
remDr$navigate("https://www.sec.gov/edgar/search/")
Sys.sleep(3)

# 2. 使用JavaScript设置正确的hash参数
correct_hash <- "#/q=\"apple\"&dateRange=custom&startdt=2017-01-01&enddt=2017-12-31"
remDr$executeScript(paste0("window.location.hash = '", correct_hash, "';"))

# 等待结果加载
Sys.sleep(5)

内容的提问来源于stack exchange,提问作者Frank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 14:44:54