Html wget未完全处理http调用
这里是一个wget命令,它执行由第三方托管的HTML/PHP堆栈报告套件——我们无法控制PHP或HTML页面 wget--无检查证书--http user=/myacc--http password=mypass-O/tmp/myoutput.csv”https://myserver.mydomain.com/mymodule.php?myrepcode=9999&action=exportcsv&admin=myappuserid&password=myappuserpass&startdate=2011-01-16&enddate=2011-01-16&reportby=mypreferredview“ 所有元件都工作正常: --http user/--http pass,由浏览器提供用户名和密码提示的标准弹出窗口 -O/tmp/myoutput.csv-感兴趣的输出文件 " 由参数动态生成的文件 myrepcode=9999-对相关报告的引用 action=exportcsv内部写入函数 admin=myappuserid第三方通过SSL访问站点-然后通过存储在数据库中的内部用户名和密码访问站点的功能) 密码=myappuserpass startdate=2011-01-16此数据和结束数据是报告9999的特定参数 结束日期=2011-01-16 reportby=mypreferredview这是报告中的一个选项,有助于实现不同级别的详细信息或聚合 问题是reportby参数是5个选项列表中的一个单选按钮选择(当然,我知道默认值是最高级别的聚合,我想要最后一个最详细的) 下面是reportby选项的HTML页面代码示例 HTML中的标记没有被列入白名单,因此如果需要,我将发送示例Html wget未完全处理http调用,html,wget,radiobuttonlist,Html,Wget,Radiobuttonlist,这里是一个wget命令,它执行由第三方托管的HTML/PHP堆栈报告套件——我们无法控制PHP或HTML页面 wget--无检查证书--http user=/myacc--http password=mypass-O/tmp/myoutput.csv”https://myserver.mydomain.com/mymodule.php?myrepcode=9999&action=exportcsv&admin=myappuserid&password=myappuserpass&startdat
<td>View by</td>
<td>
<input class="naf-radio" name="reportby" id="reportby[thedefault]" value="thedefault" type="radio">The Default
<input class="naf-radio" name="reportby" id="reportby[myleastpreferred]" value="myleastpreferred" type="radio">My Least Preferred
<input class="naf-radio" name="reportby" id="reportby[mysecondleastpreferred]" value="mysecondleastpreferred" type="radio">My Second Least Preferred
<input class="naf-radio" name="reportby" id="reportby[mythirdleastpreferred]" value="mythirdleastpreferred" type="radio">My Third Least Preferred
<input class="naf-radio" name="reportby" id="reportby[mypreferred]" value="mypreferred" type="radio">My Preferred
</td>
查看方式
默认值
我最不喜欢的
我的第二个最不喜欢的
我的第三个最不喜欢的
我的首选
无论我在wget语句中选择了哪一个reportby项,默认值始终被执行
问题
1) 有没有人在HTML中遇到过这种符号(id=inputname[inputelement])
我和一位高级web开发人员谈过,他从未见过这种输入符号(id=inputname[inputelement])——基于广泛的搜索,W3学校似乎也不熟悉这种符号
2) wget命令在执行命令时是否可以选择无默认无线电项目
这可能会在最初收到一个“Use CURL”响应—但是wget方法在我操作的有限环境中工作得非常好—特别是当我需要下载10000个这样的项目时
感谢提前回复单选按钮只是另一个表单元素,通常可以通过查询字符串传递。一些应用程序会要求将参数作为POST数据传递,但这在我的经验中并不常见 您需要做的是找到单选按钮的名称和所需选项上的值。然后,您只需将
&name=value
添加到当前url,它的行为应该与选择该单选按钮类似
表示法id=inputname[inputelement]
可以存在于javascript或类似语言中,但不能存在于HTML中。在HTML中,其名称=URL中声明的值类型(以及属性和其他内容)。在本例中,我假设该字符串是在生成HTML的任何代码中解释的,而不是呈现到屏幕上
此外,您还需要确保对url中输入的任何值进行url编码,以确保它们不包含任何非法字符(例如&或=将完全混淆)
如果querystring方法不起作用,那么wget有一个--post data
开关,允许您指定要发布的数据,这是表单的作用。如果您使用--post data=reportby=mypreferred
,我希望您在这方面取得更大的成功
如果这仍然失败,那么我会使用一些工具来查看您的wget请求以及通过浏览器查看您的请求,并比较标题和数据,看看它们有什么不同。其中一个工具就是fiddler(http://www.fiddler2.com/fiddler2/)尽管我相信还有很多其他人。谢谢克里斯的建议-但我认为这有点奇怪…关于“。。。然后,您只需将&name=value添加到当前url,它的行为应该类似于选择该下拉选项。“这正是我们所做的,但正如前面提到的,它忽略了调用&reportby=mypreferredview…这些标记元素位于HTML td标记集中-因此这与not in JAVA语句冲突-您的输入是值得赞赏的更正:not in JAVA语句应该已经读取-可能存在于javascript中,但不存在于HTML中。-如前所述,HTML标记td contain id=inputname[inputelement]子句我刚刚在您的问题中找到了HTML(您需要使用代码格式将其标记为代码,否则它会将其视为HTML,而不是您想要显示的内容)您应该能够在url的末尾添加
&reportby=mypreferred
。在计算提交的表单数据时,没有使用id,只使用名称和值。我猜这个id语法是一个错误,应该在将其呈现为HTML之前解释为id。我猜现在服务器sn不允许在url中指定,只允许在post数据中指定。您可以尝试--post data=reportby=mypreferred,看看它是否更喜欢(也会用这个更新我的答案)。Chris---postdata=-完美!非常感谢-让我走出了一个巨大的洞