使用Python下载.csv文件

时间:2014-02-01 17:03:46

标签: windows excel csv python-3.x beautifulsoup

我在Windows上使用Python 3.3。我试图找出如何从雅虎财务下载.csv文件。它是历史价格的文件。

这是我正在尝试访问链接的源代码。

<p>  
 <a href="http://ichart.finance.yahoo.com/table.csv?s=AAPL&amp;d=1&amp;e=1&amp;f=2014&amp;g=d&amp;a=8&amp;b=7&amp;c=1984&amp;ignore=.csv">
<img src="http://l.yimg.com/a/i/us/fi/02rd/spread.gif" width="16" height="16" alt="" border="0">
<strong>Download to Spreadsheet</strong>
 </a>
</p> 

这是我写的代码。

from urllib.request import urlopen
from bs4 import BeautifulSoup

website = "http://ichart.finance.yahoo.com/table.csv?s=AAPL&amp;d=1&amp;e=1&amp;f=2014&amp;g=d&amp;a=8&amp;b=7&amp;c=1984&amp;ignore=.csv"
html = urlopen(website)
soup = BeautifulSoup(html)

当我运行代码时,我希望它能够开始下载并将其放入我的下载文件夹中,但它没有做任何事情。它运行然后停止。我的下载中没有显示csv文件。所以我想我在这段代码中遗漏了别的东西。

2 个答案:

答案 0 :(得分:2)

你可以用urllib做到这一点。以下代码下载.csv文件并将内容放入名为“csv”的字符串中。然后它将字符串保存到文件:

from urllib import request

# Retrieve the webpage as a string
response = request.urlopen("http://ichart.finance.yahoo.com/table.csv?s=AAPL&amp;d=1&amp;e=1&amp;f=2014&amp;g=d&amp;a=8&amp;b=7&amp;c=1984&amp;ignore=.csv")
csv = response.read()

# Save the string to a file
csvstr = str(csv).strip("b'")

lines = csvstr.split("\\n")
f = open("historical.csv", "w")
for line in lines:
   f.write(line + "\n")
f.close()

答案 1 :(得分:0)

因为你已经使用了BeautifulSoup和urllib:

url = BeautifulSoup(html).find('a')['href']
urllib.urlretrieve(url, '/path/to/downloads/file.csv')