【发布时间】:2017-07-26 18:35:00
【问题描述】:
我有以下代码
library('rvest')
library('tidyverse')
test_url <- c('http://www.citact.org/senator-brent-waltz-r-greenwood-
district-36',
'http://www.citact.org/senator-ron-grooms-r-new-albany-
district-46',
'http://www.citact.org/representative-mike-speedy-r-
indianapolis-district-90')
test <- lapply(test_url, function(i){
web <- read_html(i)
grades <- html_nodes(web, 'td')
test_grades <- data.frame(one = (as.data.frame(html_text(grades), two =
'idk')))
first <- as.data.frame(test_grades[2:11, ])
second <- as.data.frame(test_grades[13:22, ])
names(test_grades) <- names(test_grades)
testing <- data.frame(c(first, second))
})
test_names <- lapply(test_url, function(i){
web <- read_html(i)
info <- html_nodes(web, 'h3')
text_info <- html_text(info)
names_test_df <- data_frame(member = text_info)
names_test_df <- separate(names_test_df, col = member, c('Useless',
'Info'), sep = ': ')
names_test_df <- separate(names_test_df, col = Info, c('names',
'District'), sep = ',')
names_test_df <- separate(names_test_df, col = names, c('Position',
'First', 'Last', 'Party')
, sep = ' ')
names_test_df <- separate(names_test_df, col = Party, c('Party','District
Name'), sep = '-')
})
y <- do.call(cbind.fill, c(list(do.call(rbind, test)), do.call(rbind,
test_names)))
这在收集所有信息并且没有错误的意义上有效,但问题在于我称为 y 的最终数据框。当我创建 y 时,数据框测试和数据框 test_names 不匹配。例如,测试中的某些成绩和年份与 test_names 中的正确候选人不匹配。有没有办法确保这些正确对应?我尝试在循环它们之前组合数据帧,但我没有成功。可能有更好的方法,这只是我最初的计划。
【问题讨论】:
标签: r web-scraping rvest