Télécharger un .fichier csv avec Python
Je suis à l'aide de Python 3.3 sur Windows. Je suis à essayer de comprendre comment faire pour télécharger un .fichier csv à partir de yahoo finance. C'est un fichier pour l'Historique des Prix.
C'est le code source d'où le lien est que je suis en train de l'accès.
<p>
<a href="http://ichart.finance.yahoo.com/table.csv?s=AAPL&d=1&e=1&f=2014&g=d&a=8&b=7&c=1984&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>
Et voici le code que j'ai écrit pour le faire.
from urllib.request import urlopen
from bs4 import BeautifulSoup
website = "http://ichart.finance.yahoo.com/table.csv?s=AAPL&d=1&e=1&f=2014&g=d&a=8&b=7&c=1984&ignore=.csv"
html = urlopen(website)
soup = BeautifulSoup(html)
Quand j'ai couru le code, je m'attendais à ce qu'elle commence à télécharger et le mettre dans mon dossier téléchargements, mais il ne fait rien. Il s'exécute, puis s'arrête. Pas de fichier csv s'affiche dans mes téléchargements. Donc je pense que je suis absent quelque chose d'autre dans ce code.
- La seule chose à faire est de lire l'URL, l'analyser avec BeautifulSoup et puis à la fin sans rien faire d'autre. Comment doit-Python sais que vous souhaitez enregistrer l'url? Si vous voulez avoir le fichier dans votre dossier de téléchargements, vous devez dire à Python pour le faire.
- J'ai compris ce qui se passait. Quelle ligne(s) de code serait le réaliser?
- Par exemple: Comment faire pour télécharger un fichier à l'aide de Python?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire avec urllib. Le code suivant télécharge le .csv fichier et met le contenu dans une chaîne de caractères nommée 'csv'. Puis il enregistre la chaîne dans un fichier:
bytes.decode(
méthode. Mais puisque vous enregistrez le tout dans un fichier de toute façon vous suffit d'ouvrir le fichier en mode binaire et écrire la réponse directement:open('historical.csv', 'wb').write(response.read())
.str()
, puis d'avoir à gérer les retours à la ligne comme\n
littéraux est.. très mal.depuis que vous utilisez déjà BeautifulSoup et urllib: