部署我的第一个闪亮的应用程序 - 简单的html解析器,让用户上传一个html文件,然后解析它以获取LinkedIn上的分享/提及/喜欢的信息。
应用程序在本地运行良好(在部署之前进行测试),Rstudio在部署时不会显示任何错误。但是,当我使用shinyapps链接运行它时,似乎上传无法完成,我没有得到任何输出。
本地的内容
打开应用
上传.html文件
shinyapps.io
的样子我已经修改了文件名,因为它包含识别信息。
代码如下:
library(rvest)
library(shiny)
ui <- fluidPage(
# theme = "https://bootswatch.com/4/superhero/bootstrap.css",
title = "LinkedIn Report",
fluidRow(
column(12,
fileInput("infile", "Choose .html file",
accept = "text/html", multiple = F) )
),
fluidRow(
column(12,
tableOutput("savedLocation") )
),
fluidRow(
column(12,
tableOutput("parsedData") ),
column(8,
downloadButton("downloadData", "Download"))
)
)
server <- function(input, output){
dd <- reactive(input$infile)
output$savedLocation <- renderTable({
if(is.null(input$infile)){
return(data.frame(Elapsed = character(),
Time = character(),
Name = character(),
Action = character()))
}else{
return(dd())
}
})
actual_data <- reactive({
if(is.null(input$infile)){
asdad <- data.frame(Elapsed = character(),
Time = character(),
Name = character(),
Action = character())
}else{
notifications <- read_html(input$infile$datapath)
name_action <- gsub("\\n", "", notifications %>% html_nodes(".nt-card__text--3-line") %>% html_text())
tme <- trimws(gsub("\\n", "", notifications %>% html_nodes(".nt-card__time-ago") %>% html_text()))
action <- notifications %>% html_nodes(".nt-card__text--3-line strong") %>% html_text
nme <- trimws( sapply(1:length(name_action), function(z) gsub(action[z], "", name_action[z])))
asdad <- data.frame(Elapsed = tme, Time = elap(tme), Name = nme, Action = action)
}
return(asdad)
})
output$parsedData <- renderTable({ actual_data()})
output$downloadData <- downloadHandler(
filename = "yourdata.csv",
content = function(filename){ write.table(actual_data(), file = filename,
row.names = F, sep = ",")}
)
}
shinyApp(ui = ui, server = server)
这可能与我有免费帐户有关吗?正在上传的文件大小不超过420kb。
我查看了以下问题,但他们没有解决上述问题:
Rstudio有一个使用fileInput
的类似示例,可在此处找到:https://shiny.rstudio.com/articles/upload.html
答案 0 :(得分:0)
它不是一个答案,但它仍然可能有帮助。我重写了你的代码,所以我可以执行它并将其上传到shinyappsio。
我重写了actual_data
被动反应:
actual_data <- reactive({
if(is.null(input$infile)){
asdad <- data.frame(Elapsed = character(),
Time = character(),
Name = character(),
Action = character())
}else{
asdad1 <- read_html(input$infile$datapath)
asdad2 <- html_nodes(x = asdad1, css = "#titleCast span.itemprop")
asdad <- html_text(asdad2)
}
return(asdad)
})
我使用了这个website中的html。
在本地运行应用正常,但在上传到shinyapps.io之后,这就是我在firefox中遇到的错误(500 - 内部服务器错误):
错误 /usr/share/luajit/share/lua/5.1/lapis/application.lua:73:尝试索引本地&#39; curr&#39; (字符串值)
回溯
堆栈追溯:
/usr/share/luajit/share/lua/5.1/lapis/application.lua:73:在功能上 &#39; add_params&#39;
/usr/share/luajit/share/lua/5.1/lapis/application.lua:394:在功能上 &#39;处理&#39; /usr/share/luajit/share/lua/5.1/lapis/application.lua:416: 在功能上 [C]:in 功能&#39; xpcall&#39;
/usr/share/luajit/share/lua/5.1/lapis/application.lua:412:在功能上 &#39;派遣&#39; /usr/share/luajit/share/lua/5.1/lapis/nginx.lua:181:in 功能&#39;服务&#39; access_by_lua(redx.conf:162):1:在函数中
您是否在linux上试用了该应用? Shinyapps.io基于linux,您可能必须在您的应用程序中包含其他软件包,甚至在Linux系统上安装软件,尽管我不确定这是否可能。
当fileUpload上传一个csv文件而不是html时,一切都按预期工作,在本地和shinyapps.io上。所以问题似乎是html文件或html-scraping。
答案 1 :(得分:0)
为了后人的缘故,另一个几乎没有答案。对于上下文,我之前在 Shinyapps.io 上也遇到过几次这个问题,但从 RStudio 运行时从未在 Mac 或 Windows 上遇到过。特别是,我用压缩文件(在某些情况下是压缩的 .txt 文件,在其他情况下是 ESRI Shapefiles)得到了这个。我在上传进度条中看到的格式化 HTML 如下所示。
作为经常使用 VPN 和代理的用户,我发现在上传过程中连接断开可能会导致我出现这种情况。如果您的互联网连接有问题,我会调查一下。
<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Error</title>
<style type="text/css"> body { color: #222; background: #ddd; font-family: sans-serif; margin: 20px; } h1, h2, pre { margin: 20px; } .box { background: white; overflow: hidden; box-shadow: 1px 1px 8px gray; border-radius: 1px; } .footer { text-align: center; font-family: serif; margin: 10px; font-size: 12px; color: #A7A7A7; } </style>
</head>
<body>
<div class="box">
<h1>Error</h1>
<pre>/opt/openresty/luajit/share/lua/5.1/lapis/application.lua:73: attempt to index local 'curr' (a string value)</pre>
<h2>Traceback</h2>
<pre> stack traceback: /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:73: in function 'add_params' /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:394: in function 'handler' /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:416: in function </opt/openresty/luajit/share/lua/5.1/lapis/application.lua:412> [C]: in function 'xpcall' /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:412: in function 'dispatch' /opt/openresty/luajit/share/lua/5.1/lapis/nginx.lua:181: in function 'serve' access_by_lua(nginx.conf:232):1: in function <access_by_lua(nginx.conf:232):1></pre>
</div>
<div class="footer">lapis 1.0.4</div>
</body>
</html>