Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Kostenlose Historische EOD Daten
#38
Notiz 

RE: Kostenlose Historische EOD Daten

(13.02.2019, 20:21)atze2000 schrieb:
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
import re
import time
import os
import os.path
import string

sleeptime1 = 10 #20
sleeptime2 = 2

StartStunde = 8
EndStunde = 22

symbollist = ["https://www.ls-tc.de/de/aktien/deutschland/dax"]
                

def check_data(source,a,b):
    fobj = open("Kursdaten/"+source+".csv", "r")
    i = 0
    buf = []
    for line in fobj:
        i = i +1
        buf.append(line)
    fobj.close()
    data = buf[i-1]
    daten_feld = data.split(";")
    if a == daten_feld[1] or b == daten_feld[2]:
        return False
    else:
        return True

def check_double_data(bid,ask):
    buf = []
    fobj = open("Kursdaten/"+source+".csv", "r")
    for line in fobj:
        buf.append[line]
    

def WriteData(wert,Datum,ti,bi,aa,vo):
    if check_data(wert,ti,bi) == True: # and check_double_data() == True: Muss gemacht werden
        if os.path.exists("Kursdaten/"+wert+".csv"):
            fobj = open("Kursdaten/"+wert+".csv","a")
            fobj.write(Datum+";"+ti+";"+bi+";"+aa+";"+vo+"\n")
            fobj.close()
            #print stri[1],";",Datum,";",ti,";",bi,";",aa,";",vo
        else:
            fobj = open("Report/"+"Error"+".csv","a")
            fobj.write(wert+";"+Datum+";"+ti+";"+bi+";"+aa+";"+vo+"\n")
            fobj.close()
            
def format_filename(s):
   """Take a string and return a valid filename constructed from the string.
        Uses a whitelist approach: any characters not present in valid_chars are
        removed. Also spaces are replaced with underscores.
        
        Note: this method may produce invalid filenames such as ``, `.` or `..`
        When I use this method I prepend a date string like '2009_01_15_19_46_32_'
        and append a file extension like '.txt', so I avoid the potential of using
        an invalid filename.
        
        """
   valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
   filename = ''.join(c for c in s if c in valid_chars)
   filename = filename.replace(' ','_') # I don't like spaces in filenames.
   filename = filename.replace('.','_') # Und ich keine Punkte.
   return filename.lower()


def scrap():
    i = 0
    idx = 0
    while i <> 1:
        Stunde = int(time.strftime("%H"))
        Minute = int(time.strftime("%M"))
        time.sleep(0.01)
        os.system("clear")
        print "Ausserhalb der Handelszeiten!!"
        if Stunde >= StartStunde and Stunde <= EndStunde:
            os.system("clear")
            print "++++++++++++++++++++"
            time.sleep(sleeptime1)
            os.system("clear")
            print "####################"
            #=== URL Lesen ===
            for i in range(0,len(symbollist),1):
                os.system("clear")
                print "++++++++++++++++++++"
                #time.sleep(sleeptime1)
                os.system("clear")
                print "####################"
                time.sleep(sleeptime2)
                htmlfile = urllib.urlopen(symbollist[i])
                htmltext = htmlfile.read()
                #=== HTML Daten Tags ===
                Name    = '<a href="/de/aktie/(.+?)</a>'
                Geld    = 'bidWithCurrencySymbol" decimals="4">(.+?)&nbsp;€</span>'
                Brief   = 'askWithCurrencySymbol" decimals="4">(.+?)&nbsp;€</span>'
                Zeit    = 'midTime" decimals="4">(.+?)</span>'
                Volumen = 'tradeCumulativeTurnoverWithCurrencySymbol" decimals="4">(.+?)&nbsp;€</span>'
                #=== Daten Suchen ===
                patternname = re.compile(Name)
                patternbid  = re.compile(Geld)
                patternask  = re.compile(Brief)
                patterntime = re.compile(Zeit)
                patternvol  = re.compile(Volumen)
                #=== Daten Extrahieren  ===
                Bezeichnung = re.findall(patternname,htmltext)
                BID         = re.findall(patternbid,htmltext)
                ASK         = re.findall(patternask,htmltext)
                TIME        = re.findall(patterntime,htmltext)
                VOL         = re.findall(patternvol,htmltext)
                Datum = str(time.strftime("%d.%m.%Y"))
                for i in range(0,len(Bezeichnung),1):
                    na = Bezeichnung[i]
                    print na
                    bi = BID[i]
                    aa = ASK[i]
                    ti = TIME[i]
                    vo = VOL[i]
                    stri = na.split(">")
                    wert = stri[1]
                    korrekterfilename = format_filename(wert)
                    if idx == 0:
                        fobj = open("Kursdaten/"+korrekterfilename+".csv","a")
                        fobj.write(Datum+";"+ti+";"+bi+";"+aa+";"+vo+"\n")
                        fobj.close()
                        #print stri[1],";",Datum,";",ti,";",bi,";",aa,";",vo
                    elif idx == 1:
                        WriteData(korrekterfilename,Datum,ti,bi,aa,vo)
                    #wert = ""
            idx = 1 # schaltet nach dem ersten schreiben checkdata frei

                    
            

scrap()


Hab den Code vor vielen Jahren geschrieben, müsst mal überarbeitet werden, aber läuft noch.

danke für diese Info, ich werd dieses script mal ausprobieren - wird aber ein paar Tage dauern - Tup


Nachrichten in diesem Thema
Kostenlose Historische EOD Daten - von atze2000 - 18.11.2018, 11:34
RE: Kostenlose Historische EOD Daten - von Solventix - 21.11.2018, 00:26
RE: Kostenlose Historische EOD Daten - von Guhu - 21.11.2018, 11:52
RE: Kostenlose Historische EOD Daten - von Solventix - 21.11.2018, 16:21
RE: Kostenlose Historische EOD Daten - von Solventix - 21.11.2018, 20:22
RE: Kostenlose Historische EOD Daten - von Solventix - 21.11.2018, 22:03
RE: Kostenlose Historische EOD Daten - von Faultier - 12.02.2019, 12:30
RE: Kostenlose Historische EOD Daten - von Beth - 24.11.2018, 23:28
RE: Kostenlose Historische EOD Daten - von Beth - 25.11.2018, 19:43
RE: Kostenlose Historische EOD Daten - von Solventix - 26.11.2018, 14:59
RE: Kostenlose Historische EOD Daten - von Solventix - 30.11.2018, 06:58
Für Faule - von Beth - 29.11.2018, 14:30
RE: Kostenlose Historische EOD Daten - von Faultier - 07.02.2019, 14:42
RE: Kostenlose Historische EOD Daten - von divipedia - 07.02.2019, 14:43
RE: Kostenlose Historische EOD Daten - von Noni-Binder - 13.02.2019, 21:57
RE: Kostenlose Historische EOD Daten - von Guhu - 29.01.2020, 13:15
RE: Kostenlose Historische EOD Daten - von Un_fass_bar - 25.04.2020, 10:17
RE: Kostenlose Historische EOD Daten - von jf2 - 25.04.2020, 20:18
RE: Kostenlose Historische EOD Daten - von Un_fass_bar - 25.04.2020, 13:55
RE: Kostenlose Historische EOD Daten - von Un_fass_bar - 25.04.2020, 20:24
RE: Kostenlose Historische EOD Daten - von jf2 - 25.04.2020, 20:30
RE: Kostenlose Historische EOD Daten - von Un_fass_bar - 25.04.2020, 21:14

Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Notiz Open Source Tools und Daten Lancelot 43 12.480 09.01.2024, 15:08
Letzter Beitrag: Lancelot
Notiz suche historische Leitzinsen der Bundesbank seit 1965 frank 2 2.555 22.09.2020, 19:55
Letzter Beitrag: muchmoney
Notiz EOD Daten Feeds atze2000 7 8.814 08.02.2019, 12:59
Letzter Beitrag: Noni-Binder
Notiz Historische Indexzusammensetzung atze2000 4 5.449 31.01.2019, 10:31
Letzter Beitrag: pjf
Notiz Free Future Daten atze2000 0 2.163 11.01.2019, 13:27
Letzter Beitrag: atze2000
Notiz Cot Daten atze2000 2 3.518 10.01.2019, 19:46
Letzter Beitrag: atze2000

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste