就像标题所说的那样,我正在尝试解析如下的网址:
https://salzundbrot.com/suche/#!search={"s1":60,"s2":90,"r1":2,"r2":4,"f1":450,"f2":750,"c":3}&x=1&view=infotiles
curl抛出以下错误:
$ curl https://salzundbrot.com/suche/#!search={"s1":60,"s2":90,"r1":2,"r2":4,"f1":450,"f2":750,"c":3}&x=1&view=infotiles
-bash: !search={/"s1/": event not found
ruby的uri模块也无法处理它,抛出bad URI(is not URI?)
错误。
单引号不起作用,转义双引号不起作用(相同的错误) - 肯定有办法做到这一点,但我找不到它。
答案 0 :(得分:0)
正如我在上面评论的那样,你不会得到你期望的结果,你的网址包含“哈希”或“片段标识符”中的数据,即#
之后的部分,因为URL的一部分不会通过curl(或Web浏览器)发送到服务器。给定http://example.com/#!foo=bar
之类的网址,curl只会请求http://example.com/
。根据RFC-3986,“片段标识符在取消引用之前与URI的其余部分分开,因此片段内的标识信息仅由用户代理取消引用。”
但是,对于其他网址,您可以将HEREDOC与xargs
一起使用。卷曲的--globoff
选项防止它解释括号或大括号(否则foo{bar,baz}
将使卷曲使两个请求,一个为foobar
,1为foobaz
)。
$ xargs <<END curl --globoff
https://somesite.com/search/?search={"s1":55,"s2":90,"r1":2,"r2":4,"f1":450,"f2":775,"c":3}&x=1
END