我有一份姓名列表(名、姓和出生日期),我需要在美国佐治亚州富尔顿县监狱网站上进行搜索,以确定某人是否在狱中或被释放。
该网站是 http:/justice.fultoncountyga.govPAJailManagerJailingSearch.aspx?ID=400。
该网站要求你输入姓和名,然后给你一个结果列表。
我找到了一些stackoverflow的帖子,这些帖子给了我一些方向,但我仍然在努力解决这个问题。我正在使用这个 岗位 作为和范例来遵循。我正在使用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_values
和 submit_form
.
谢谢。
在最初的通话中,网页似乎打开到"http:/justice.fultoncountyga.govPAJailManagerdefault.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")
注意: 确认你的行为是否符合网站的服务条款。 许多网站都有反对报废的政策。
网站主要依靠Javascript来渲染自己。当您在新的浏览器中打开您提供的链接时,您会被重定向到...。http://justice.fultoncountyga.gov/PAJailManager/default.aspx
在这里你必须点击 "监狱记录 "链接。这将执行一点Javascript,把你送到表格的页面。
rvest
无法执行任意的Javascript。你可能需要看看 RSelenium
. Selenium
基本上是远程控制一个浏览器(例如Firefox或Chrome),它按照预期执行Javascript。
感谢Dave2e。
这是工作的代码。这个问题已经回答了(但我将再发一个问题,因为我没有得到一个数据表格的结果。
注意:我在这个网站上找不到任何我所查询的服务条款。
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."