如何使用wget或curl在表单提交和302重定向后下载文件
我正在尝试从命令行下载CSV文件。在表单字段中输入一张股票票据,单击下载,文件即被下载。以下是流程: 有问题的网站是 流程如下所示:如何使用wget或curl在表单提交和302重定向后下载文件,curl,wget,Curl,Wget,我正在尝试从命令行下载CSV文件。在表单字段中输入一张股票票据,单击下载,文件即被下载。以下是流程: 有问题的网站是 流程如下所示: 浏览至http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx 在表单字段中输入ticker,然后单击下载 将行动帖子发送至http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx 响应为302,位置标题设置为http://www.cboe.com/De
http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx
http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx
http://www.cboe.com/DelayedQuote/QuoteData.dat
http://www.cboe.com/DelayedQuote/QuoteData.dat
QuoteData.dat
这是我想要的CSVwget --post-file=cboe_form_data.txt -L http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx
cboe\u form\u data.txt
是从chrome inspector获取的post数据:http://sandalsoft.com/cboe_form_data.txt
当您执行wget…/quottabledownload.aspx
时,它将下载此aspx文件,对于../Quitedata.dat,wget将其视为外来文件(它们不在..../quottabledownload.aspx中),所以您需要--span主机开关。转到…./QuoteData.dat,此选项可能会有所帮助。:)该站点似乎需要引用者标题:
wget --post-file=cboe_form_data.txt \
--header='Referer: http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx' \
http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx
使用此命令,“QuoteData.dat”GET
请求将具有Referer
标题。该请求的响应代码为200
,包含CSV
当Referer
标题不存在时,“QuoteData.dat”GET
请求返回code302
和“对象移动”HTML页面。在这种情况下,客户端被发送回“QuoteTableDownload.aspx”。将重定向结果保存到某个文件中,然后对该文件调用curl-0?当然,这是假设重定向为您提供了文件的路径。如果不是,如果它沿着重定向执行文件,那么您需要在调用curl之前从头文件中获取它。无论哪种方式,我都会尝试将此作为两步问题。1) 获取文件路径2)下载它。我试过类似的方法。我已经运行了上面的wget命令,之后是指向重定向位置的wget。它不下载文件,只下载.asp页面。Wget不保存重定向的文件,它遵循302,然后是后续的302。没有下载.CSV。我尝试使用这些命令,但没有成功:wget--post file=cboe\u form\u data.txt-Lhttp://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx -v--保留会话cookies--保存cookies=cookies.txt--跨主机--用户代理=“Mozilla/4.0”
和wget--post file=cboe\u form\u data.txt-Lhttp://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx -v--保留会话cookies--保存cookies=cookies.txt--跨主机--用户代理=“Mozilla/4.0”;wget--load cookies=cookies.txt--user agent=“Mozilla/4.0”http://www.cboe.com//DelayedQuote/QuoteData.dat --span hosts
我正在使用表单数据(我想)就是这样,我不敢相信我错过了。非常感谢。