Bash curl:填写web表单并检索内容

Bash curl:填写web表单并检索内容,bash,curl,webforms,wget,Bash,Curl,Webforms,Wget,我想使用bash脚本自动填充网站上的web表单:,并从输出文本框中检索结果 我试过: curl-d from\u frame\u in=“values”-d from\u epoch\u year=“values”-d from\u epoch\u decimal=“values”-d to \u frame\u out=“values”-d to \u epoch\u year=“values”-d to \u epoch\u decimal d转换按钮=“values”“$websiteur

我想使用bash脚本自动填充网站上的web表单:,并从输出文本框中检索结果

我试过:

curl-d from\u frame\u in=“values”-d from\u epoch\u year=“values”-d from\u epoch\u decimal=“values”-d to \u frame\u out=“values”-d to \u epoch\u year=“values”-d to \u epoch\u decimal d转换按钮=“values”“$websiteurl”

但是,未选择历元下拉列表,只有帧下拉列表和输入文本框获得值

我还尝试:

wget--post data'from\u frame\u in=values&from\u epoch\u year=values&from\u epoch\u decimal=values&to\u frame\u out=values&to\u epoch\u year=values&to\u epoch\u decimal=values&transform\u按钮=values'$websiteurl

此脚本可以使所有下拉列表和输入文本框获得值。 但是,对于上面提到的两种方法,我不知道如何从输出文本框检索计算结果


如果有人能帮我解决这个问题或为我指出解决这个问题的方向,我将不胜感激。

请格式化您的问题

在Chrome中打开页面,点击F12,tab Network,单击Transform(在您的网页上)。在网络选项卡中向上滚动,右键单击index.php-Copy-copyascurl(bash) 清除垃圾后,您应获得:

curl -s 'http://www.epncb.oma.be/_productsservices/coord_trans/index.php'   --data-raw 'from_frame_in=ETRF89&from_epoch_year=2000&from_epoch_decimal=0&from_epoch_year2=2000&from_epoch_doy=001&from_epoch_date=2000-01-01&from_epoch_week=1042&from_epoch_dow=6&inputvalues=%23+Lines+starting+by+%23+are+treated+as+comments%0D%0A%23+Fields+%28in+decimal+format%29+should+be+separated+by+at+least+one+space%0D%0A%23%0D%0A%23+--%3E+Example+without+velocity+-+StationName%28no+space+character%29+X%5Bm%5D+Y%5Bm%5D+Z%5Bm%5D+%3A%0D%0AStationName+4027894.006+307045.600+4919474.910%0D%0A%23%0D%0A%23+--%3E+Example+with+velocity+-+StationName%28no+space+character%29+X%5Bm%5D+Y%5Bm%5D+Z%5Bm%5D+VX%5Bm%2Fyr%5D+VY%5Bm%2Fyr%5D+VZ%5Bm%2Fyr%5D+%3A%0D%0AStationName+4027894.006+307045.600+4919474.910+0.01+0.2+0.03%0D%0A&to_frame_out=ETRF89&to_epoch_year=2000&to_epoch_decimal=0&to_epoch_year2=2000&to_epoch_doy=001&to_epoch_date=2000-01-01&to_epoch_week=1042&to_epoch_dow=6&outputvalues=StationName+4027894.00600++307045.60000+4919474.91000+%C2%A0+%C2%A0+%C2%A0%0D%0AStationName+4027894.00600++307045.60000+4919474.91000++0.01000++0.20000++0.03000%0D%0A&epochtype=decimalyear&transform_button=Transform'   --compressed   --insecure | xmllint --html --xpath "//textarea[@name='outputvalues']/text()" - 2>/dev/null

StationName 4027894.00600  307045.60000 4919474.91000      
StationName 4027894.00600  307045.60000 4919474.91000  0.01000  0.20000  0.03000

-s
静默curl进程,
xmllint--html--xpath
解析xpath中curl和clip元素的输出(xmllint可以通过
sudo apt install libxml2 utils
)安装,
-
告诉xmllint从curl而不是文件中获取stdin/pipe,
2>/dev/null
将错误输出重定向到地狱-讨厌的方式摆脱解析错误

lojza,非常感谢。我遵循了您的方法,发现我的问题是因为我忘了用epochtype设置值。无论如何,我感谢你及时的回复和建议。