Summary
J'ai écrit un script pour télécharger des informations boursières à partir de Stock Investment Memo sans grattage.
python ./stockDownload.py -c 7203
7203 Les données quotidiennes 2019 de Toyota Motor Co., Ltd.peuvent être téléchargées avec csv.
Si le téléchargement réussit, il renvoie Code: 7203 téléchargement terminé.
, et s'il échoue, il renvoie Code: non valide.
.
Le grattage est interdit depuis Yahoo! Finance. La méthode de récupération des informations boursières de Stock Investment Memo a été divulguée [^ 1], mais le format peut être modifié et l'analyse peut ne pas fonctionner. D'un autre côté, il y a un bouton de téléchargement sur le site, donc je cherchais à savoir s'il pouvait être bien utilisé.
Après avoir appuyé sur le bouton de téléchargement, je l'ai analysé à partir de l'onglet réseau de l'outil de développement Google.
Il semble que les données soient POSTÉES sur https: // kabuoji3.com / stock / file.php
.
sleep (3)
est inclus pour éviter une charge excessive du serveur. {stockDownload.py}
#!/usr/bin/env python
import requests
import re
import click
from time import sleep
@click.command()
@click.option("--code", "-c", "code", required=True,
help="Stock code to download.")
def main(code):
year = "2019"
session = requests.Session()
headers = {
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
}
data = {
"code":code,
"year":year,
"csv":""
}
url = "https://kabuoji3.com/stock/file.php"
res = session.post(url, data=data, headers=headers)
try:
contentDisposition = res.headers['Content-Disposition']
fileName = re.findall(r'\"(.+?)\"', contentDisposition)[0]
fullName = ~/Documents/projects/ipo/data/stock/{}".format(fileName)
with open(fullName, "wb") as saveFile:
saveFile.write(res.content)
print("Code: {} download finished.".format(code))
except KeyError:
print("Code: {} not valid.".format(code))
sleep(3)
if __name__ == '__main__':
main()
J'ai créé un cli en utilisant Click pour la première fois. Je pense que c'est plus facile à lire que sys.argv.
Tout ce que vous avez à faire est d'utiliser le cat code | du shell pendant la ligne de lecture: do python ./stockDownload.py -c $ line; done
.
Puisqu'il est codé en cp932, il doit être converti en nkf.
[Python] Pseudo-clic sur un bouton avec des requêtes How to Write Python Command-Line Interfaces like a Pro
[^ 1]: [Python] Obtenez des données sur le cours de l'action en grattant [^ 2]: [Python] Que faire lorsque vous n'avez pas l'autorisation d'accéder sur ce serveur
Recommended Posts