嗯,这是可行的。但这需要肘部润滑脂。
  
  
   本部分:
  
  library(rvest)
library(httr)
library(tidyverse)
POST(
  url = "http://www.cbs.dtu.dk/cgi-bin/webface2.fcgi",
  encode = "form",
  body=list(
    `configfile` = "/usr/opt/www/pub/CBS/services/SignalP-4.1/SignalP.cf",
    `SEQPASTE` = "MTSKTCLVFFFSSLILTNFALAQDRAPHGLAYETPVAFSPSAFDFFHTQPENPDPTFNPCSESGCSPLPVAAKVQGASAKAQESDIVSISTGTRSGIEEHGVVGIIFGLAFAVMM",
    `orgtype` = "euk",
    `Dcut-type` = "default",
    `Dcut-noTM` = "0.45",
    `Dcut-TM` = "0.50",
    `graphmode` = "png",
    `format` = "summary",
    `minlen` = "",
    `method` = "best",
    `trunc` = ""
  ),
  verbose()
) -> res
  
   
    verbose()
   
   这样你就可以看到发生了什么。它缺少“filename”字段,但您指定了字符串,因此它很好地模拟了您所做的操作。
  
  
   现在,棘手的部分是,它使用了一个中间重定向页面,在查询完成时,您可以输入一个电子邮件地址进行通知。它会定期(大约每隔10秒左右)检查查询是否完成,如果完成,它会快速重定向。
  
  
   该页面具有查询id,可以通过以下方式提取:
  
  content(res, as="parsed") %>% 
  html_nodes("input[name='jobid']") %>% 
  html_attr("value") -> jobid
  
   
    Sys.sleep(20)
   
   在这样做之前,确保完成报告。
  
  GET(
  url = "http://www.cbs.dtu.dk/cgi-bin/webface2.fcgi",
  query = list(
    jobid = jobid,
    wait = "20"
  ),
  verbose()
) -> res2
  
   这将占据最终结果页面:
  
  html_print(HTML(content(res2, as="text")))
  
   
     
   
  
  
  
  
   您可以看到图像丢失,因为
   
    GET
   
   
    rvest
   
   /
   
    xml2
   
   解析整个页面并清除表和URL,然后可以使用它们获取新内容。
  
  
   为了做到这一切,我用了
   
    burpsuite
   
   拦截浏览器会话,然后
   
    
     burrp