Macos 通过OSX终端从.html中为“提取值”;卷曲;在单个脚本中提交
如何通过终端提取html页面下一行的变量值,然后在同一脚本中通过“curl-d”提交它Macos 通过OSX终端从.html中为“提取值”;卷曲;在单个脚本中提交,macos,bash,curl,Macos,Bash,Curl,如何通过终端提取html页面下一行的变量值,然后在同一脚本中通过“curl-d”提交它 <input type="hidden" name="au_pxytimetag" value="1234567890"> 编辑:如何在单个脚本中将提取的值传递到“curl-d”命令?可能是个愚蠢的问题,但我完全不知道=0)您可以尝试: grep au_pxytimetag input.html | sed "s/.* value=\"\(.*\)\".*/\1/" 编辑: 如果
<input type="hidden" name="au_pxytimetag" value="1234567890">
编辑:如何在单个脚本中将提取的值传递到“curl-d”命令?可能是个愚蠢的问题,但我完全不知道=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
您可以使用
xmllint
:
value=$(xmllint --html --xpath "string(//input[@name='au_pxytimetag']/@value)" index.html)
你可以用我的:
但是你不需要
与
您可以将网页上第一个表单中的所有值发送到表单操作,然后可以从下一页查询内容编辑: 我无法从你的问题中看出你到底想做什么。我最初以为您试图从文件中提取变量,但似乎您实际上想首先获取该文件,其次提取变量,第三,将变量用于其他用途。。。因此,让我们讨论一下这些步骤中的每一步: 首先,您想使用
curl
抓取一个页面,所以您可以这样做
curl www.some.where.com
页面将在终端上输出。但实际上,你想在那个页面上搜索一些东西,所以你需要这样做
curl www.some.where.com | awk something
或
但是你想把它放到一个变量中,所以你需要这样做
var=$(curl www.some.where.com | awk something)
curl -d "param1=$var" http://some.url.com/somewhere
或
我想你需要的实际命令是
var=$(curl www.some.where.com | awk -F\" '/au_pxytimetag/{print $(NF-1)}')
然后,您希望将变量var
用于另一个curl
操作,因此需要执行以下操作
var=$(curl www.some.where.com | awk something)
curl -d "param1=$var" http://some.url.com/somewhere
原始答案
我会像这样使用awk
:
var=$(awk -F\" '/au_pxytimetag/{print $(NF-1)}' yourfile)
使用“
作为字段分隔符,在包含au\u pxytimetag
的行中取倒数第二个字段
那么你可以这样使用它
curl -d "param1=$var¶m2=SomethingElse" http://some.url.com/somewhere
当我使用本地html文件时,它可以工作,但是当通过http://(awk:无法打开文件)(grep:http://b.l.a.h.html:没有这样的文件或目录)访问该文件时,您和@Herson的命令都找不到该文件。有什么想法吗?我的评论的答案是var=$(curl | awk-F\'/au|pxytimetag/{print$(NF-1)})
var=$(awk -F\" '/au_pxytimetag/{print $(NF-1)}' yourfile)
curl -d "param1=$var¶m2=SomethingElse" http://some.url.com/somewhere