Summary
Ich habe ein Skript geschrieben, um Aktieninformationen von Stock Investment Memo herunterzuladen, ohne zu kratzen.
python ./stockDownload.py -c 7203
Die täglichen Daten für 2019 von 7203 Toyota Motor Co., Ltd. können mit csv heruntergeladen werden. Wenn der Download erfolgreich ist, wird "Code: 7203 Download beendet" zurückgegeben. Wenn dies fehlschlägt, wird "Code: ungültig" zurückgegeben.
Das Verschrotten von Yahoo! Finanzen ist verboten. Die Methode zum Scrapen von Bestandsinformationen aus Stock Investment Memo wurde bekannt gegeben [^ 1], das Format kann jedoch geändert werden und das Parsen funktioniert möglicherweise nicht. Auf der anderen Seite gibt es einen Download-Button auf der Seite, also habe ich untersucht, ob er gut verwendet werden kann.
Nachdem ich auf die Download-Schaltfläche geklickt hatte, analysierte ich sie auf der Registerkarte "Netzwerk" des Google Developer Tools. Es scheint, dass Daten an "https: // kabuoji3.com / stock / file.php" gesendet werden.
sleep (3)
ist enthalten, um eine übermäßige Serverlast zu vermeiden. {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()
Ich habe zum ersten Mal eine Kli mit Klick erstellt. Ich denke, es ist einfacher zu lesen als sys.argv.
Alles, was Sie tun müssen, ist, den cat code | der Shell zu verwenden, während Sie die Zeile lesen: do python ./stockDownload.py -c $ line; done
.
Da es cp932-codiert ist, muss es als nkf konvertiert werden.
[Python] Pseudo-Klick auf eine Schaltfläche mit Anfragen How to Write Python Command-Line Interfaces like a Pro
[^ 1]: [Python] Aktienkursdaten durch Scraping abrufen [^ 2]: [Python] Was tun, wenn Sie auf diesem Server keine Zugriffsberechtigung haben?
Recommended Posts