Curl只获取特定的数据

时间:2013-10-04 21:06:26

标签: bash post curl command-line data-transfer

我最近一直在命令行上尝试curl,并且想知道以下是否可行。

我做了以下命令:

curl --data "ToBinary=fubar" http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/Binary_To_Text.asp

我得到的是具有相应响应的整个页面(包含我想要的数据的网页),但我只想要一个特定的数据(0110011001110101011000100110000101110010)。

如果没有额外的处理,有没有办法直接获取这些信息?

2 个答案:

答案 0 :(得分:1)

您应该使用html解析器来提取二进制字符串,我认为curl不能这样做。其中一个替代方案是及其mojolicious模块,它允许您post页面并使用DOM解析器来提取内容,如下所示:

perl -Mojo -E '
    say p(q{http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/Binary_To_Text.asp} 
        => form 
        => { ToBinary => q{fubar} })
    ->dom
    ->at(q{#ToText})
    ->text'

它产生:

0110011001110101011000100110000101110010

答案 1 :(得分:0)

除非你能说服作者提供只返回转换数据的api,否则你无法在没有额外处理的情况下完成。另一种方法是自己动手。

ascii到二进制文本:

echo fubar | perl -pe 's/(.)/sprintf("%08b", ord($1))/eg'

二进制文本到ascii:

echo 0110011001110101011000100110000101110010 | \
perl -pe 's/([01]{8})/sprintf("%s", pack("B8", $1))/eg'