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

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

我有一份姓名列表(名、姓和出生日期),我需要在美国佐治亚州富尔顿县监狱网站上进行搜索,以确定某人是否在狱中或被释放。

该网站是 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_valuessubmit_form.

谢谢。

r web-scraping rvest
2个回答
1
投票

在最初的通话中,网页似乎打开到"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")

注意: 确认你的行为是否符合网站的服务条款。 许多网站都有反对报废的政策。


1
投票

网站主要依靠Javascript来渲染自己。当您在新的浏览器中打开您提供的链接时,您会被重定向到...。http://justice.fultoncountyga.gov/PAJailManager/default.aspx在这里你必须点击 "监狱记录 "链接。这将执行一点Javascript,把你送到表格的页面。

rvest 无法执行任意的Javascript。你可能需要看看 RSelenium. Selenium 基本上是远程控制一个浏览器(例如Firefox或Chrome),它按照预期执行Javascript。


1
投票

感谢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."
© www.soinside.com 2019 - 2024. All rights reserved.