在open-uri请求中使用特殊字符

时间:2013-09-11 03:11:45

标签: ruby http uri open-uri

我正在使用open-uri从网页上获取与nokogiri一起使用的内容。 我正在尝试这样的事情:

url =“http://pesquisa.bvsalud.org/portal/?output=site&lang=pt&from=0&sort=&format=summary&count=20&fb=&page=1&q= \”qualidade + de + vida \“& index = tw” response = open(url)

然后我收到错误:URI :: InvalidURIError:错误的URI(不是URI?)

问题是:我知道我可以使用URI.encode(url)来阻止url中的某些特殊字符,但是我要求的网站在我清理网址时没有给我相同的响应,它没有使用'%22'代替双引号时无法正确回答..

如何使用双引号提出此类请求?任何其他可以做到的图书馆? Open-uri不接受这一点。我试着使用gems addressable-uri和吃,但我在两者上都得到了相同的错误。 :/

1 个答案:

答案 0 :(得分:4)

URI.encode('http://pesquisa.bvsalud.org/portal/?output=site&lang=pt&from=0&sort=&format=summary&count=20&fb=&page=1&q=\"qualidade+de+vida\"&index=tw')
=> "pesquisa.bvsalud.org/portal/?output=site&lang=pt&from=0&sort=&format=summary&count=20&fb=&page=1&q=%5C%22qualidade+de+vida%5C&index=tw"