如何在搜索表单中找到 html_node?

How do I find html_node on search form?

我有一个姓名列表(名字、姓氏和出生日期),我需要搜索佐治亚州富尔顿县(美国)监狱网站以确定一个人是否入狱或获释.

网站是http://justice.fultoncountyga.gov/PAJailManager/JailingSearch.aspx?ID=400

该站点要求您输入姓氏和名字,然后它会为您提供结果列表。

我发现一些 Whosebug 帖子给了我一些指导,但我仍在努力弄清楚这一点。我正在使用这个 post 作为示例。我正在使用 SelectorGaget 来帮助找出 CSS 标签。

这是我目前的代码。现在我不知道要用什么html_node

library(rvest)

# Specify URL
fc.url <- "http://justice.fultoncountyga.gov/PAJailManager/JailingSearch.aspx?ID=400"

# start session
jail <- html_session(fc.url)

# Grab initial form
form.unfilled <- jail %>% html_node("form")

form.unfilled

我从 form.unfilled 得到的结果是 {xml_missing} <NA>,我知道这是不对的。

我想如果我能计算出 html_node 值,我可以继续使用 set_valuessubmit_form

谢谢。

该网站严重依赖 Javascript 来呈现自身。在新的浏览器实例中打开您提供的 link 时,您将被重定向到 http://justice.fultoncountyga.gov/PAJailManager/default.aspx,您必须在其中单击 "Jail Records" link。这会执行一点 Javascript,将您发送到带有表单的页面。

rvest无法执行任意Javascript。您可能需要查看 RSeleniumSelenium 基本上远程控制浏览器(例如 Firefox 或 Chrome),它按预期执行 Javascript。

它出现在网页打开到“http://justice.fultoncountyga.gov/PAJailManager/default.aspx 的初始调用中。会话开始后,您应该能够跳转到搜索页面:

library(rvest)

# Specify URL
fc.url <- "http://justice.fultoncountyga.gov/PAJailManager/JailingSearch.aspx?ID=400"

# start session
jail <- html_session("http://justice.fultoncountyga.gov/PAJailManager/default.aspx")
#jump to search page
jail2 <- jail %>% jump_to("http://justice.fultoncountyga.gov/PAJailManager/JailingSearch.aspx?ID=400")

#list the form's fields
html_form(jail2)[[1]]

# Grab initial form
form.unfilled <- jail2 %>% html_node("form")

注意:确认您的行为符合网站的服务条款。许多网站确实有针对 抓取 .

的政策

感谢 Dave2e。

这是有效的代码。此问题已得到解答(但我会 post 另一个问题,因为结果我没有得到 table 数据。)

注意:我在该站点上找不到我正在查询的任何服务条款

library(rvest)

# start session
jail <- html_session("http://justice.fultoncountyga.gov/PAJailManager/default.aspx")
#jump to search page
jail2 <- jail %>% jump_to("http://justice.fultoncountyga.gov/PAJailManager/JailingSearch.aspx?ID=400")

#list the form's fields
html_form(jail2)[[1]]


# Grab initial form
form.unfilled <- jail2 %>% html_node("form") %>% html_form()

form.unfilled

#name values
lname <- "DOE"
fname <- "JOHN"

# Fille the form with name values
form.filled <- form.unfilled %>% 
        set_values("LastName" = lname,
                   "FirstName" = fname)

#Submit form
r <- submit_form(jail2, form.filled,
            submit = "SearchSubmit")

#grab tables from submitted form
table <- r %>% html_nodes("table")

#grab a table with some data
table[[5]] %>% html_table()

# resulting text in this table:
# " An error occurred while processing your request.Please contact your system administrator."