首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于DatePicker - RSelenium的问题

关于DatePicker - RSelenium的问题
EN

Stack Overflow用户
提问于 2019-08-02 16:07:44
回答 1查看 298关注 0票数 0

我在为学术研究搜集可公开获取的数据。不过,我从网站上提取的信息有一个非常恼人的数据报警器。我不确定他们是否为了阻止私营公司收集犯罪数据而实施这一措施,但这似乎相当愚蠢。

下面是的网址。

我可以用我的机构证书绕过Captcha,FYI。

您可以在下面看到代码(减去登录信息):

代码语言:javascript
复制
#Miami Scraper

rm(list=ls())

remDr$close()
rm(rD)
gc()
rm(list=ls())
setwd("~/Desktop/Miami Scrape")
library(httr)
library(rvest)
library(zoo)
library(anytime)
library(lubridate)
library(dplyr)
library(RSelenium)

browser <- remoteDriver(port = 5556, browserName = "firefox")
remDr<-browser[["client"]]
url <- "https://www2.miami-dadeclerk.com/PremierServices/login.aspx"

rD <- rsDriver(verbose=FALSE,port=4444L,browser="firefox")
remDr <- rD$client
remDr$navigate(url)

#Click the Logging In Option
#Log-in stuff happens here

url2 <- "https://www2.miami-dadeclerk.com/cjis/casesearch.aspx"

remDr <- rD$client
remDr$navigate(url2)

#Here, you will read in the sheets. Let's start with a handful 

date <- c("02", "01", "01")
sequence <- c("030686","027910","014707")


seqbar <- remDr$findElement("id","txtCaseNo3")
seqbar$sendKeysToElement(list(sequence[1]))


type <- remDr$findElement("id","ddCaseType")
type$clickElement()
type$sendKeysToElement(list("F","\n"))

yearbar <- remDr$findElement("id","txtCaseNo2")
yearbar$clearElement()
prev <- remDr$setTimeout("2000")
yearbar$sendKeysToElement(list(date[1]))

数据报警器默认为19,但这并不是系统性的。我刚刚开始开发代码,但是我注意到,如果我在连续两个搜索中使用相同的大小写信息,它就会经常从"02“切换到"19”。如果我转到另一种情况,它也可能不起作用。我不知道该怎么处理这个数据报警器。任何帮助都将不胜感激。

我试过几样东西。正如您所看到的,我已经尝试清除默认代码并减缓代码的速度。这似乎不管用。

还有最后一个注意事项,如果您逐行运行代码,那么它可以工作,但是一次性执行将不能正常运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-04 12:01:48

我无法使用R进行测试,因为它似乎无法设置RSelenium,但更改年份输入框的值属性似乎有效。在R中,看起来有两种方法可以这样做。

无法测试,但类似于:

代码语言:javascript
复制
year <- '02'

#method 1 using inbuilt method which executes js under hood
remDr$findElement('id','txtCaseNo2')$setElementAttribute('value',year)

#method 2 js direct
js <- paste0("document.querySelector('#txtCaseNo2').value='", year,"';")

remDr$executeScript(js)

不管怎样,可能足以让你走上解决方案的轨道。

我成功地用Python测试了类似的版本。

代码语言:javascript
复制
from selenium import webdriver

d = webdriver.Chrome()
d.get('https://www2.miami-dadeclerk.com/cjis/casesearch.aspx?AspxAutoDetectCookieSupport=1')
case_nums = ["030686"]
year = '02'
d.execute_script("document.querySelector('#txtCaseNo2').value='" + year + "';")
# d.execute_script("arguments[0].value = '02';", d.find_element_by_id('txtCaseNo2')) 
d.find_element_by_id('txtCaseNo3').send_keys(case_nums[0])
d.find_element_by_css_selector('[value=F]').click()
captcha = input()
d.find_element_by_id('CaptchaCodeTextBox').send_keys(captcha)
d.find_element_by_id('btnCaseSearch').click()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57330068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档