0

我想使用 cron 每天下载投资组合信息,并增加 2 个复杂性:

  1. 它需要密码
  2. 我想通过单击“下载到电子表格”来获得我自己在网站上可以获得的格式

如果我使用:

wget -U Chromium --user='e-address' --password='pass' \
    https://www.google.com/finance/portfolio > "file_"`date +"%d-%m-%Y"`+.csv

我得到回应:

========================================================================= 
--2013-10-20 12:16:13--  https://www.google.com/finance/portfolio 
Resolving www.google.com (www.google.com)... 74.125.195.105, 74.125.195.103, 74.125.195.99, ... 
Connecting to www.google.com (www.google.com)|74.125.195.105|:443... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: unspecified [text/html] 
Saving to: ‘portfolio’ 

[ <=>                                   ] 16,718      --.-K/s   in 0.04s   

2013-10-20 12:16:13 (431 KB/s) - ‘portfolio’ saved [16718] 
==========================================================================

它保存到一个名为“portfolio”的文件中,而不是我要求的位置(“file_” date +"%d-%m-%Y"+.csv)。当我在浏览器中查看“投资组合”时,它说我需要登录我的帐户,即没有注意到我包含的用户和密码信息。

如果我将悬停在“下载到电子表格”链接上的字符串添加到网址中:-

wget -U Chromium --user='e-address' --password='pass' \
    https://www.google.com/finance/portfolio?... > "file_"`date +"%d-%m-%Y"`+.csv

我得到:

[1] 5175 
[2] 5176 
[3] 5177 
[4] 5178 
--2013-10-20 12:44:56--  https://www.google.com/finance/portfolio?pid=1 
Resolving www.google.com (www.google.com)... [2]   Done                    output=csv 
[3]-  Done                    action=view 
[4]+  Done                    pview=pview 
hg21@hg21-sda2:~$ 74.125.195.106, 74.125.195.103, 74.125.195.104, ... 
Connecting to www.google.com (www.google.com)|74.125.195.106|:443... connected. 
HTTP request sent, awaiting response... 200 OK 
Length: unspecified [text/html] 
Saving to: ‘portfolio?pid=1’ 

[ <=>                                   ] 16,768      --.-K/s   in 0.05s   

2013-10-20 12:44:56 (357 KB/s) - ‘portfolio?pid=1.1’ saved [16768] 

此时它挂起。它此时写入的文件 ('portfolio?pid=1') 与之前使用的 wget 的 'portfolio' 文件相同。

如果我然后输入我的密码,它会继续:

pass: command not found 
[1]+  Done                    wget -U Chromium --user="e-address" --password='pass' https://www.google.com/finance/portfolio?pid=1 
[1]+  Done                    wget -U Chromium --user="e-address" --password='pass' https://www.google.com/finance/portfolio?pid=1 

非常感谢任何帮助。

4

1 回答 1

0

这里有几个问题:

1)wget没有保存到正确的文件名

使用该-O选项而不是>shell 重定向。

更改> file_`date+"%d-%m-%Y"`.csv-O file_`date+"%d-%m-%Y"`.csv

提示:如果您使用date+"%Y-%m-%d",您的文件自然会按时间顺序排序。

这本质上是 wget 命令的副本,用于下载文件并另存为不同的文件名

另请参阅man wget选项。

2)wget正在产生多个进程并“挂起”

您的 URL 中有&s 被 shell 解释,而不是包含在传递给 wget 的参数中。您需要将 URL 用引号引起来。

https://finance.google.com/?...&...&...

变成

"https://finance.google.com/?...&...&..."
于 2013-10-21T19:50:01.130 回答