我正在使用rvest
从美国证券交易委员会获取一些公司文件。从特定公司开始,我成功地将URL提取到每个10k文档中,并将这些URL放在名为xcel的数据框中。然后,我想进一步抓取每个URL。
我认为最有意义的是使用for循环遍历xcel$fullurl
列中的每个URL,在每个URL上使用read_html
函数,并在每个页面上提取表格)。
我无法让实际的循环工作。如果您认为for循环不是可行的方法,我很乐意听到任何其他建议。
library(rvest)
library(stringi)
sec<-read_html("https://www.sec.gov/cgi-bin/browse-edgar?
action=getcompany&CIK=0000072903&type=10-k&dateb=&owner=exclude&count=40")
xcel<- sec %>%
html_nodes("#documentsbutton") %>%
html_attr("href")
xcel<-data.frame(xcel)
xcel$xcell<-paste0("https://www.sec.gov",xcel$xcell)
xcel$fullurl<-paste0(xcel$xcell,xcel$xcel)
as.character(xcel$fullurl) #set of URL's that I want to scrape from
#Problem starts here
for (i in xcel$fullurl){
pageurl<-xcel$fullurl
phase2 <- read_html(pageurl[i])
hopefully<-phase2 %>%
html_table("tbody")
希望这应该给我每个网站的随后表格
您可以使用map
/ lapply
遍历每个URL并从每个URL中提取第一个表
library(rvest)
library(dplyr)
library(purrr)
map(xcel$fullurl, ~ .x %>% read_html() %>% html_table() %>% .[[1]])
# Seq Description Document Type Size
#1 1 10-K xcel1231201510-k.htm 10-K 6375358
#2 2 EXHIBIT 10.28 xcelex1028q42015.htm EX-10.28 57583
#3 3 EXHIBIT 10.29 xcelex1029q42015.htm EX-10.29 25233
#4 4 EXHIBIT 12.01 xcelex1201q42015.htm EX-12.01 50108
#5 5 EXHIBIT 21.01 xcelex2101q42015.htm EX-21.01 22841
#.....
这将返回数据帧列表。如果要将所有这些组合成一个数据帧,可以使用map_dfr
而不是map
。