通过OSX终端从.html中提取值,以便在单个脚本中提交“curl”

时间:2014-06-20 20:01:30

标签: macos bash curl

如何通过终端提取html页面的以下行的变量值,然后通过“curl -d”在同一个脚本中提交?

     <input type="hidden" name="au_pxytimetag" value="1234567890">

编辑:如何在单个脚本中将提取的值传输到“curl -d”命令?可能是一个愚蠢的问题,但我完全是菜鸟。 = 0)

4 个答案:

答案 0 :(得分:0)

您可以尝试:

grep au_pxytimetag input.html | sed "s/.* value=\"\(.*\)\".*/\1/"

编辑:

如果您需要在脚本上使用此功能:

#!/bin/bash
DATA=$(grep au_pxytimetag input.html | sed "s/.* value=\"\(.*\)\".*/\1/")
curl http://example.com -d $DATA

答案 1 :(得分:0)

您可以使用xmllint

value=$(xmllint --html --xpath "string(//input[@name='au_pxytimetag']/@value)" index.html)

答案 2 :(得分:0)

您可以使用我的Xidel

执行此操作
 xidel http://webpage -e "//input[@name='au_pxytimetag']/@value"

但你不需要。

使用

 xidel http://webpage -f "(//form)[1]" -e "//what-you-need-from-the-next-page"

您可以将网页上第一个表单中的所有值发送到表单操作,然后您可以从下一页查询内容

答案 3 :(得分:0)

<强>编辑:

我无法从你的问题中看出你究竟想做什么。我原本以为你试图从一个文件中提取一个变量,但看起来你真的想首先得到那个文件,其次是提取一个变量,第三个是用变量做其他的东西...所以让我们来点每个步骤:

首先,您要使用curl抓取一个页面,这样您就可以

curl www.some.where.com

,页面将在您的终端上输出。但实际上你想在那个页面上搜索一些东西,所以你需要做

curl www.some.where.com | awk something

curl www.some.where.com | grep something

但是你想把它放到变量中,所以你需要做

var=$(curl www.some.where.com | awk something)

var=$(curl www.some.where.com | grep something)

我认为你想要的实际命令是

var=$(curl www.some.where.com | awk -F\" '/au_pxytimetag/{print $(NF-1)}')

然后,您希望将变量var用于其他curl操作,因此您需要执行

curl -d "param1=$var" http://some.url.com/somewhere

原始回答

我这样使用awk

var=$(awk -F\" '/au_pxytimetag/{print $(NF-1)}' yourfile)

使用au_pxytimetag作为字段分隔符,在包含"的第二个字段上显示。

然后你可以像这样使用它

curl -d "param1=$var&param2=SomethingElse" http://some.url.com/somewhere