10

部署我的第一个闪亮的应用程序——简单的 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。

我查看了以下问题,但没有解决上述问题:

  1. shinyapps.io 上的闪亮应用程序部署错误
  2. 部署闪亮的应用程序时出错
  3. 无法在闪亮的服务器上部署闪亮的应用程序

Rstudio 有一个类似的例子fileInput,可以在这里找到:https ://shiny.rstudio.com/articles/upload.html

4

2 回答 2

0

为了后代的缘故,另一个几乎没有答案。就上下文而言,我之前在 shinyapps.io 上也遇到过几次这个问题,但从 RStudio 运行时从未在 Mac 或 Windows 上遇到过。特别是,我使用压缩文件(在某些情况下是压缩的 .txt 文件,在其他情况下是 ESRI Shapefile)得到了这个。我在上传进度栏中看到的格式化 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 &#039;curr&#039; (a string value)</pre>
         <h2>Traceback</h2>
         <pre> stack traceback: /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:73: in function &#039;add_params&#039; /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:394: in function &#039;handler&#039; /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:416: in function &lt;/opt/openresty/luajit/share/lua/5.1/lapis/application.lua:412&gt; [C]: in function &#039;xpcall&#039; /opt/openresty/luajit/share/lua/5.1/lapis/application.lua:412: in function &#039;dispatch&#039; /opt/openresty/luajit/share/lua/5.1/lapis/nginx.lua:181: in function &#039;serve&#039; access_by_lua(nginx.conf:232):1: in function &lt;access_by_lua(nginx.conf:232):1&gt;</pre>
      </div>
      <div class="footer">lapis 1.0.4</div>
   </body>
</html>
于 2021-02-23T10:26:06.450 回答
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)
  })

我使用了这个网站的 html 。

在本地运行应用程序工作正常,但上传到 shinyapps.io 后,这就是我在 firefox 中遇到的错误(500 - 内部服务器错误):

错误 /usr/share/luajit/share/lua/5.1/lapis/application.lua:73:尝试索引本地“curr”(字符串值)

追溯

堆栈回溯:
/usr/share/luajit/share/lua/5.1/lapis/application.lua:73:在函数“add_params”
/usr/share/luajit/share/lua/5.1/lapis/application.lua:394中:在函数“处理程序”/usr/share/luajit/share/lua/5.1/lapis/application.lua:416:在函数[C]中:在函数“xpcall”
/usr/share/luajit/share/lua/5.1/ lapis/application.lua:412: 在函数'dispatch' /usr/share/luajit/share/lua/5.1/lapis/nginx.lua:181: 在函数'serve' access_by_lua(redx.conf:162):1:在功能上

您是否在 linux 上尝试过该应用程序?Shinyapps.io 基于 linux,您可能必须在您的应用程序中包含其他软件包,甚至在 linux 系统上安装软件,尽管我不确定这是否可能。

当 fileUpload 上传 csv 文件而不是 html 时,一切都按预期工作,在本地和 shinyapps.io 上。所以问题似乎出在 html-files 或 html-scraping 上。

于 2018-05-22T20:31:32.990 回答