我正在嘗試使用 URL 串列(一個 csv 檔案)對多個網頁進行轉義 這是我的資料集:https : //www.mediafire.com/file/9qh516tdcto7is7/nyp_data.csv/file “url”列包括所有我正在嘗試使用和抓取的鏈接。
我嘗試通過以下方式使用 for() 回圈:
news_urls <- read_csv("nyp_data.csv")
library(rvest)
content_list <- vector()
for (i in 1:nrow(news_urls)) {
nyp_url <- news_urls[i, 'url']
nyp_html <- read_html(nyp_url)
nyp_nodes <- nyp_html %>%
html_elements(".single__content")
tag_name = ".single__content"
nyp_texts <- nyp_html %>%
html_elements(tag_name) %>%
html_text()
{ content_list[i] <- nyp_texts[1]
}}
但是,我收到一條錯誤訊息: 在 UseMethod("read_xml") 中出錯:沒有適用于 'read_xml' 的方法應用于類 "c('tbl_df', 'tbl', 'data.frame')"
我相信我擁有的鏈接運作良好;它們沒有損壞,我可以通過單擊單個鏈接訪問它們。
如果 for 回圈不是我應該在這里使用的回圈,那么還有其他想法來減少內容嗎?
*我也試過:
urls <- news_urls[,5] #identify the column with the urls
url_xml <- try(apply(urls, 1, read_html)) #apply the function read_html() to the `url` vector
textScraper <- function(x) {
html_text(html_nodes (x, ".single__content")) %>% #in this data, my text is in a node called ".single__content"
str_replace_all("\n", "") %>%
str_replace_all("\t", "") %>%
paste(collapse = '')
}
article_text <- lapply(url_xml, textScraper)
article_text[1]
但它讓我在 open.connection(x, "rb") 中給出錯誤Error : HTTP error 404。
uj5u.com熱心網友回復:
錯誤發生在這一行:
nyp_html <- read_html(nyp_url)
由于錯誤訊息告訴您引數 to read_xml(這是內部呼叫的內容read_html)是 a data.frame(除其他外,因為它實際上是一個小標題)。
這是因為在這一行:
nyp_url <- news_urls[i, 'url']
您正在使用單括號對資料進行子集化。單括號確實回傳一個包含過濾資料的 data.frame。您可以通過使用這樣的雙括號來避免這種情況:
nyp_url <- news_urls[[i, 'url']]
或者這個(我通常發現它更具可讀性):
nyp_url <- news_urls[i, ]$url
要么應該解決您的問題。如果您想閱讀有關使用這些符號的更多資訊,可以查看此答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/364173.html
