r - 使用 R 填写在线搜索表单并抓取结果数据
问题描述
这是我第一次尝试网络抓取。我正在尝试从https://tvnews.vanderbilt.edu/search抓取数据。我希望能够
使用不同的搜索选项,例如使用所有网络,直接 R 搜索某个短语,例如 Nixon tax。
刮掉所有结果项目编号,例如,如果您对 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()
我受到两个问题的阻碍。
我不明白为 submit_form() 函数的提交参数输入什么内容。我已经尝试过“提交”和https://tvnews.vanderbilt.edu/search上提交按钮的 CSS 代码。两者似乎都不起作用。
尽管代码确实可以在没有提交参数条目的情况下工作,但我似乎最终得到了完全相同的搜索页面。我没有收到任何结果
如果有任何帮助指出我的代码错误的地方,我将不胜感激。我也知道 R 可能不是完成这项任务的最佳工具,但目前我只能使用它。
解决方案
推荐阅读
- laravel - Laravel 7 Cookie 文档不再永远被遗忘
- kotlin - 如何将 Kotlin 中的字符串转换为可读格式?
- hibernate - 不考虑 Hibernate ORM 5.4.13.Final 或更高版本的 @Where 子句
- android - 如何在颤动中解析 JSON 中的列表
- angular - 重新加载 Angular 应用程序时,总是转到忽略路由的根页面
- c++ - Sqlite C++ 中的预处理语句如何工作
- momentjs - Momentjs - 添加具有特定时间的日期
- typescript - Sinon 存根无法在具有导出类的打字稿中工作
- python - ResourceWarning:隐式清理
- c# - 如何将类属性值传递给另一个类中的方法