【问题标题】:Download image/png - RCurl下载图片/png - RCurl
【发布时间】:2015-07-01 03:46:33
【问题描述】:

我正在尝试使用 Clearbit.com 的免费徽标 API (https://logo.clearbit.com/:domain) 来下载一些公司徽标。

要试用该工具,只需将https://logo.clearbit.com/nike.com 粘贴到您的网络浏览器中即可。

目标是将来自 GET 请求的响应保存为 PNG 文件。这是我正在使用的代码示例,但失败了。

    library(RCurl)
    url <- "https://logo.clearbit.com/basf.com"
    png <- getURL(url, httpheader = "image/png", ssl.verifypeer = F)

这会产生以下错误消息:

    Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) : 
    embedded nul in string:'‰PNG\r\n\032\n\0\0\0\rIHDR\0\0\0\0\0\0\b\006\0\0\0Ã>aË\0\0\0\004gAMA\0\0±\vüa\005\0\0\0 cHRM\0\0z&\0\0€„\0\0ú\0\0\0€è\0\0u0\0\0ê`\0\0:˜\0\0\027pœºQ<\0\0\0\006bKGD\0ÿ\0ÿ\0ÿ ½§“\0\0\0\atIME\aß\006\036\022\0228_nn\005\0\0\027$IDATxÚíyx[Õ÷?÷^IW»dË–÷5v\026'qœ•¤$!%$¡P(]\030Z†y™2CK\aZ\006ž–ç-Ó…¶Ó>}g\nü¥lçi¡e:L\031\030(…°¦¤$$„fOììÞâ}·,YÒ]æ\017+"ŠäÄÄv3ɽŸ<y\022stîÑ9ß{öó;Â뇟Ô11,â…N€É…Å\024€Á1\005`pL\001\030\034S\0\006Ç\024€Á1\005`pL\001\030\034S\0\006Ç2•‘9­^<r\016ƒ£Œ*#IwQÈu•eüNgèxòÿ’hÁoÏG\024$B±>"ñá\v?—<S(\0êœË\bºËÙÛþ\026£§\025¬WΡ¶`mÆo½qd,œßžÇü‚µØ-®¤_W¨‘\003›Q´è…ΧK–I\vÀ#çà·ç‘ï©ÄïÈÏ\030ÆkÏ\005 y`?]¡¦4\177I´RW¸\036«dçP÷{Œ*#ÌÊ]NÐ]Žª)ìïÜt¡óé’eÒ\002(ò΢Ä_sÖ0.[\026\0ý‘\016ú#miþ9Î\022¬’þH;Í\003û\001\020\005‘ùùW’ç©à`×f4]M†\027\004‘ «\034€P¬‘Ø\00Ö„ä8K\023Ïj'¦FD+\005ž*|ö º®Ñ>|,-\r\016«—|Ï\f\\6?è:‘ø0¡ã„bý\0Ø-.|ö<¢Ê\b\021%D©\177. p¤g;N«—|O\025.›\017\035\030\036íáäÐዦ֚´\0:C'\bÇ\a\001(ñÏÅiõ¦…q'\004à°z¨+\\(XÆ\n»\177\037ª®$kˆS\031\0160\020é\004Æú\017n9›¡

我已经搜索了文档,但我无法解决这个问题,所以请指教。

附:这是我在 stackoverflow 上的第一篇文章,请随时就样式和一般准则提出建议。

谢谢, 瑞恩

【问题讨论】:

  • 只使用baseR怎么样:download.file(url,"myimagename.png",mode="wb")
  • @user227710 这行得通,感谢您的帮助!

标签: r http rcurl


【解决方案1】:

RCurl 的替代方案是 Jeroen Ooms 的新 curl 包,它为libcurl 提供了现代界面。

## install.packages("curl")
library("curl")
curl_download(url = "https://logo.clearbit.com/basf.com",
              destfile = "~/foo.png")

这是我下载的图片:

【讨论】:

    【解决方案2】:

    试试这个

    library(RCurl)
    url <- "https://logo.clearbit.com/basf.com"
    png <- getBinaryURL(url, httpheader = "image/png", ssl.verifypeer = F) # download
    writeBin(png, con = tf <- tempfile(fileext = ".png")) # save
    shell.exec(tf) # open file on windows
    

    【讨论】:

    • 这让我可以查看 png 文件,但我没有看到它已被保存。
    • 它保存在存储在变量tf - enterprint(tf)中的文件名中。
    • 这确实有效,但不像我希望的那样无缝。看看上面加文的答案; curl 在这种情况下似乎更加用户友好。
    • 最直接的解决方案是download.file,如 cmets 中所述。我以为您正在寻找 {RCurl} 解决方案。但我想 {curl} 是未来,而且 Gavin 无论如何都更有经验。 :)
    猜你喜欢
    • 1970-01-01
    • 2012-08-16
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 2019-01-31
    • 2016-02-25
    相关资源
    最近更新 更多