|
dafosy
Anmeldungsdatum: 26. Februar 2012
Beiträge: Zähle...
|
Moin, ich habe mich mit meiner Vorgehensweise eine Webseite einmal pro Woche automatisch zu speichern verhaspelt. Ich glaube, die Lösung liegt so nahe, dass ich sie einfach nicht sehe. Ich möchte die Webseite: http://kurse.boerse.ard.de/ard/indizes_einzelkurs_uebersicht.htn?sektion=performance&i=159096
mittels eines Cronjobs einmal pro Woche speichern. (1) Eigentliches Ziel ist, die Kurstabelle gleich in eine CSV zu schreiben. (2) Es würde aber auch schon ein simples Webseiten speichern gemäß Chromium-Borwser - "Speichern unter" reichen.
Ich probierte bisher: Formatierter Text verschiedene Varianten mit wget aus (allerdings werden die PHP-Daten/ Java-Script nicht mitgenommen elinks, links2 und links -dump Varianten
Welche Möglichkeiten seht ihr auf die Schnelle, die Webseite zu speichern. Gibt es vielleicht sogar einen Terminalbefehl für Chromium oder Konqueror? Gruß und Danke für eine Anregung.
|
|
scuba
Anmeldungsdatum: 7. März 2007
Beiträge: 966
|
Hai dafosy, Die Lösung ist noch näher ☺ wget http://kurse.boerse.ard.de/ard/indizes_einzelkurs_uebersicht.htn?sektion=performance&i=159096 Weitere Infos im Wiki wget und cron. LG und Blubb
|
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
|
Zum stumpfen saugen der Seite reicht ansonsten auch curl ... .. und wenn Du willst, kannst Du tatsächlich die Auswertung der Tabellen direkt dort anhängen. Dann könntest Du die Seite auch direkt mit hxextract (aus den HTML-XML-utils) saugen, und mit xmlstarlet dann die Feinauswertung nachschieben. (und es gibt noch mehr Tools, die man hier alternativ nehmen kann, um HTML zu exzerpieren ...) LG, track
|
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11278
|
Wäre das nicht einfacher sich die Kurse als fertiges csv für den gewünschten Index zu holen, z.B. für den DAX: https://de.finance.yahoo.com/quote/%5EGDAXI/history?ltr=1
Die Parameter in der Download-URL sind eigentlich ziemlich selbsterklärend.
|
|
dafosy
(Themenstarter)
Anmeldungsdatum: 26. Februar 2012
Beiträge: 164
|
Hallo in die Runde und Danke für die Rückmeldungen. @Scuba:
wget funktioniert leider nicht, die php-Daten werden nicht mit geladen, d.h. die gespeicherte Webseite zeigt mir statt der Tabelle folgendes an: "keine Daten gefunden". @track
hxextract habe ich noch gar nicht auf dem Schirm, da lese ich mich mal rein, falls du auf die Schnelle noch Google-Suchbegriffe zur Hand hast, mit denen ich fix einsteigen kann in das Thema, würde ich mich freuen. curl schaue ich mir auf jeden Fall aber auch nochmal an. @seahawk
Die historischen Daten nur für den Hauptindex sind mir leider zu wenig. Ich will die Performancedaten der einzelnen Werte.
|
|
track
Anmeldungsdatum: 26. Juni 2008
Beiträge: 7174
|
😀 Ich fürchte, das ist kein PHP-Problem, sondern ein "Quoting"- Problem. Probier es mal mit Gänsefüßchen: 😉 wget "http://kurse.boerse.ard.de/ard/indizes_einzelkurs_uebersicht.htn?sektion=performance&i=159096" Jedenfalls klappt es bei mir sowohl mit w3m, als auch mit curl (und "Quoting" oder \Escape natürlich 😉 ): | w3m http://kurse.boerse.ard.de/ard/indizes_einzelkurs_uebersicht.htn?sektion=performance\&i=159096
curl "http://kurse.boerse.ard.de/ard/indizes_einzelkurs_uebersicht.htn?sektion=performance&i=159096" > boerse.html
|
Zu den HTML-XML-Utils gibt es nicht so viel im Netz, das wichtigste hatte ich Dir oben schon verlinkt. Aber Du kannst ja nochmal die Beispiele hier im Forum angucken, das ist vielleicht ganz sinnvoll. LG, track
|
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11278
|
dafosy schrieb: @seahawk
Die historischen Daten nur für den Hauptindex sind mir leider zu wenig. Ich will die Performancedaten der einzelnen Werte.
Und was hindert dich daran die csv-Daten für alle gewünschten Indices herunterzuladen und dann jeweils die Veränderungen zu errechnen? Das Herunterladen und errechnen der Veränderung zur Vorwoche ist schnell erledigt, wenn man weiß, wie die Index-Werte heißen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 | #!/usr/bin/env python3
import csv
import io
import os.path
from datetime import datetime, timedelta
from urllib import parse, request
indices = [
'^GDAXI', # Dax
'LHA.DE', # deutsche Lufthansa
'BMW.DE', # BMW
]
data_dir = "/tmp"
url_template = "http://chart.finance.yahoo.com/table.csv?%s&ignore=.csv"
if __name__ == '__main__':
today = datetime.utcnow()
yesterday = today - timedelta(days=1)
a_week_ago = today - timedelta(days=8)
filename = os.path.join(data_dir, "indices_%s_%s.csv" % (
a_week_ago.date().strftime("%d.%m.%Y"),
yesterday.date().strftime("%d.%m.%Y")
))
with open(filename, 'w') as f:
fieldnames = ["Index", "Date", "Open", "High", "Low" ,"Close", "Volume",
"Adj Close", "Change 1w"]
csv_result = csv.DictWriter(f, fieldnames=fieldnames)
csv_result.writeheader()
for index in indices:
data = {
's': index,
'a': str(int(a_week_ago.strftime("%m")) - 1),
'b': a_week_ago.strftime("%d"),
'c': a_week_ago.strftime("%Y"),
'd': str(int(yesterday.strftime("%m")) - 1),
'e': yesterday.strftime("%d"),
'f': yesterday.strftime("%Y"),
'g': "w" # d=daily, w=weekly
}
params = parse.urlencode(data)
print("downloading data from %s" % (url_template % params))
with request.urlopen(url_template % params) as r, open(filename, 'w') as f:
data = io.StringIO(r.read().decode())
csv_raw = csv.DictReader(data)
this_week = next(csv_raw)
last_week = next(csv_raw)
change = float(this_week['Adj Close']) / float(last_week['Adj Close']) - 1
this_week['Change 1w'] = change
this_week['Index'] = index
csv_result.writerow(this_week)
print("saved data to %s" % (filename))
|
Edit: man kann auch gleich alles in eine Datei schreiben
|
|
dafosy
(Themenstarter)
Anmeldungsdatum: 26. Februar 2012
Beiträge: 164
|
Danke.
Mit den Infos kann ich mir erstmal eine zufriedenstellende Lösung bauen.
|