【发布时间】:2021-12-14 13:31:35
【问题描述】:
我想从我的计算机中导入一个 CSV 文件,其中包括指向闪亮应用程序的网络文章的 URL。然后我想从 CSV 文件中的“url”列中获取 100 个 URL,然后网络抓取所有这些 URL 以创建“Word cloud”。
这是代码的服务器部分。我想从 CSV 文件中选择“url”列,并使用 for 循环遍历“url”的前 10 个,以便从这些 URL 引导的所有文章中抓取数据。然后我将该数据分配给名为“inputWords”的变量,然后将“inputWords”再次分配给一个名为“data”的变量以创建词云:
server <- function(input, output) {
data_source <- reactive({
if (input$source == "csv") {
data <- inputWords()
}
return(data)
})
inputWords <- reactive({
if (is.null(input$csv)) {
return("")
}
else if (is.table(input$csv)) {
CSVFile <- read.csv(input$csv$datapath)
Urls <- c(CSVFile$url[1:10])
pages <- list()
for (i in Urls) {
ArticlePages <- read_html(i)
articleText = ArticlePages %>% html_elements("h1.newsfull__title, p") %>% html_text()
pages[[i]] <- c(articleText)
}
pages[1:10]
}
})
这就是我将“data_source”分配给词云的地方
output$cloud <- renderWordcloud2({
create_wordcloud(data_source(),
num_words = input$num)
})
这是警告信息:
Warning: Error in if: argument is of length zero
【问题讨论】:
-
将
read.csv(colnames(input$file$datapath))更改为read.csv(input$file$datapath),因为noticias不是列名,而只是Section下的值。 -
感谢您的建议,但我仍然收到相同的错误消息。因此,我手动对“noticias”文章进行排序并创建了一个 csv 文件,并尝试从其“url”列中删除链接,然后我收到相同的错误消息。猜猜这部分有什么问题。 ` input_file % html_elements("h1.newsfull__title, p") %>% html_text() pages[[i]]
标签: r web-scraping shiny reactive import-csv