我正在尝试从命令行下载CSV文件。您可以在表单字段中输入库存单,单击下载,然后下载文件。这是流程:
有问题的网站是here。
流程如下:
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
这是我想要的CSV 显示请求/响应的图片:
Chrome的RestClient也会显示流量
Wget跟随最初的302到QuoteData.dat URL,但在再次重定向之前不下载该文件。
我已经复制了用于wget和curl的标题和cookie,但没有成功。我已经从Chrome Inspector“复制为Curl”但没有成功。我也玩过casperjs,但是我已经进一步了解了curl和wget。
我现在有点痴迷于搞清楚:)任何帮助都会受到赞赏。
UPDATE:这是我正在使用的wget命令:
wget --post-file=cboe_form_data.txt -L http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx
cboe_form_data.txt
是从Chrome检查员获取的帖子数据:http://sandalsoft.com/cboe_form_data.txt
答案 0 :(得分:1)
该网站似乎需要Referer
标题:
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
请求返回代码302
和“对象移动”HTML页面。在这种情况下,客户端将被发送回“QuoteTableDownload.aspx”。
答案 1 :(得分:0)
执行wget ....../QuotrTableDownload.aspx
时,它会下载这个aspx文件,对于..... / Quitedata.dat,wget将它们视为外来文件(它们不在.... / QuoteTableDownload.aspx中),所以你需要--span-hosts开关。去..... / QuoteData.dat,这个选项可能有用。:)