首页 > 解决方案 > 使用 R 填写在线搜索表单并抓取结果数据

问题描述

这是我第一次尝试网络抓取。我正在尝试从https://tvnews.vanderbilt.edu/search抓取数据。我希望能够

  1. 使用不同的搜索选项,例如使用所有网络,直接 R 搜索某个短语,例如 Nixon tax。

  2. 刮掉所有结果项目编号,例如,如果您对 Nixon tax 进行短语搜索,则第一个项目编号是 #1115273,包括您需要单击“加载更多结果”按钮才能查看的项目编号。

最终,我希望有一个数据框,其中包含网站返回的所有项目编号,而不管您包含或省略的选项如何。

到目前为止,我尝试使用 rvest 包如下;

VDTA_session <- html_session("https://tvnews.vanderbilt.edu/search")
VDTA_search <- "https://tvnews.vanderbilt.edu/search"
VDTA_Nixon_form <- VDTA_session %>% 
 html_form() %>% 
 .[[1]] %>% 
 set_values('search[query]' = "Nixon tax",
            'search[from_date]' = "1968-08-05",
            'search[to_date]' = "2006-12-31",
            'search[reporter]' = '',
            'search[network]' = "1",
            'search[type]' = "exact",
            'search[type]' = "exact", 
            'search[sort_by]' = "relevance",
            'search[sort_by]' = "relevance",
            'search[sort_by]' = "relevance",
            'search[sort_by]' = "relevance",
            'search[include_commercials]' = "0",
            'search[include_news]'= "1",
            'search[include_intros]' = "0",
            'search[include_good_night]' = "0",
            'search[include_specials]' = "0",
            'search[include_evening_news]'= "1")


VDTA_Nixon_Result <- submit_form(VDTA_session, VDTA_Nixon_form)

read_html(VDTA_Nixon_Result) %>%
html_nodes(".result-id em") %>%
html_text() %>%
unname() %>%
as.character()

我受到两个问题的阻碍。

  1. 我不明白为 submit_form() 函数的提交参数输入什么内容。我已经尝试过“提交”和https://tvnews.vanderbilt.edu/search上提交按钮的 CSS 代码。两者似乎都不起作用。

  2. 尽管代码确实可以在没有提交参数条目的情况下工作,但我似乎最终得到了完全相同的搜索页面。我没有收到任何结果

如果有任何帮助指出我的代码错误的地方,我将不胜感激。我也知道 R 可能不是完成这项任务的最佳工具,但目前我只能使用它。

标签: rweb-scraping

解决方案


推荐阅读