【发布时间】:2014-02-24 01:48:12
【问题描述】:
为了能够从 R 访问 NIST Chemistry Webbook 数据库,我需要能够将一些查询传递给 URL 编码的网址。大多数情况下,这种转换与 URLencode() 一起工作得很好,但在某些情况下不能。一种失败的情况,例如是为了
query="Poligodial + 3-methoxy-4,5-methylenedioxyamphetamine (R,S) adduct, # 1"
我尝试使用
library(XML)
library(RCurl)
url=URLencode(paste0('http://webbook.nist.gov/cgi/cbook.cgi?Name=',query,'&Units=SI'))
doc=htmlParse(getURL(url),encoding="UTF-8")
但是,如果您在网络浏览器中尝试此网址 http://webbook.nist.gov/cgi/cbook.cgi?Name=Poligodial%20+%203-methoxy-4,5-methylenedioxyamphetamine%20(R,S)%20adduct,%20%23%201&Units=SI 它给出了未找到的名称。 显然,如果您尝试从 http://webbook.nist.gov/chemistry/name-ser.html 它需要 URL 编码的字符串
"http://webbook.nist.gov/cgi/cbook.cgi?Name=Poligodial+%2B+3-methoxy-4%2C5-methylenedioxyamphetamine+%28R%2CS%29+adduct%2C+%23+1&Units=SI"
有没有人知道在这种情况下我应该使用什么样的gsub 规则来获得相同类型的 URL 编码?还是有其他简单的解决方法?
我试过了
url=gsub(" ","+",gsub(",","%2C",gsub("+","%2B",URLencode(paste('http://webbook.nist.gov/cgi/cbook.cgi?Name=',query,'&Units=SI', sep="")),fixed=T),fixed=T),fixed=T)
但这仍然不太正确,我不知道网站所有者可以使用什么规则......
【问题讨论】: