如何通过终端提取html页面的以下行的变量值,然后通过“curl -d”在同一个脚本中提交?
<input type="hidden" name="au_pxytimetag" value="1234567890">
编辑:如何在单个脚本中将提取的值传输到“curl -d”命令?可能是一个愚蠢的问题,但我完全是菜鸟。 = 0)
答案 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¶m2=SomethingElse" http://some.url.com/somewhere