2017-06-13 40 views
0

我正在研究一個需要我瀏覽各種鏈接頁面的項目,在這些鏈接中找到xml文件並解析它。我無法解壓縮xml文件。每個鏈接中有兩個xml文件,我對更大的文件感興趣。我怎樣才能提取XML文件,並找到最大尺寸的文件。我嘗試使用grep函數,但它不斷給我一個錯誤。XML文件沒有被解壓縮在R

sotu<-data.frame() 
for (i in seq(1,501, 100)) 
{ 
    securl <- paste0("https://www.sec.gov/cgi-bin/srch-edgar?text=abs- 
        ee&start=", i, "&count=100&first=2016") 

    main.page <- read_html(securl) 

    urls <- main.page %>% 
     html_nodes("div td:nth-child(2) a")%>% 
     html_attr("href") 
    baseurl <- "https://www.sec.gov" 
    fulllink <-paste(baseurl, urls, sep = "") 

    names <- main.page %>% 
     html_nodes ("div td:nth-child(2) a") %>% 
     html_text() 

    date <- main.page %>% 
     html_nodes ("td:nth-child(5)") %>% 
     html_text() 

    result <- data.frame(urls=fulllink,companyname=names,FilingDate=date, stringsAsFactors = FALSE) 

    sotu<- rbind(sotu,result) 
} 

for (i in seq(nrow(sotu))) 

    { 

    getXML <- read_html(sotu$urls[1]) %>% 
    grep("xml", getXML, ignore.case=FALSE) 

    } 

一切正常,只是當我嘗試遍歷每一個環節,並找到xml文件,我不斷收到一個錯誤。這是不是正確的功能?

回答

0

dplyr一些幫助,我們可以這樣做:

sotu %>% 
    rowwise() %>% 
    do({ 
    read_html(.$urls) %>% 
    html_table() %>% 
    as.data.frame() %>% 
    filter(grepl('.*\\.xml', Document)) %>% 
    filter(Size == max(Size)) 
}) 

,或者作爲類型總是'EX-102'至少在例如:

sotu %>% 
    rowwise() %>% 
    do({ 
    read_html(.$urls) %>% 
    html_table() %>% 
    as.data.frame() %>% 
    filter(Type == 'EX-102') 
}) 

這也擺脫for循環,這在R中很少是個好主意。