WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Backdoor zum Auslesen eines Identifiers einrichten

 

Nik9090
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 15.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2016, 18:23     Titel:
  Antworten mit Zitat      
Sorry, versuche es bestmöglich zu erklären, drücke mich wohl einfach nur zu unklar aus. Versuche mich hier auch gerade der Lösung anzunähren. Letztlich geht es darum, dass er jeden Downloadlink, der im Abschnitt:
Code:
for i=1:32;
    root = idx_data{i};
    root=strtrim(root(99:150));
     extention{i} = root;
end  


erzeugt wird an der entsprechenden Stelle (fett markiert:edgar/data/712034/0001047469-08-002056.txt) mit der Liste abgleicht und nur dann den Downloadlink ausführt, wenn eben ein Match mit einer CIK aus der Liste vorliegt.

Das sollte dann vielleicht sogar ohne zusätzlichen Loop gehen oder?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.04.2016, 18:31     Titel:
  Antworten mit Zitat      
Aber wie du an die Nummer aus dem String kommst und mit einer Liste vergleichst, habe ich dir doch bereits in einem Vorschlag gezeigt. Warum fügst du das dann nicht einfach dazu? Es sollte doch wohl reichen wenn 10-K und die Nummer nacheinander überprüft werden.

Ansonsten bitte den relevanten Code inkl. Beispieldaten posten, so dass auch andere ihn ausführen können Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Nik9090
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 15.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2016, 19:15     Titel:
  Antworten mit Zitat      
Die Stelle an der ich mich dann anscheinend schwertue, ist, wie ich es hinbekomme, dass statt einem konkreten Downloadlink, wie bei dir im Beispiel:
Code:
link =[b] 'edgar/data/313798/0001104659-08-021249.txt'[/b];
 


vielmehr nacheinander alle Strings geprüft werden, die vom Programm erzeugt werden. Ich weiß, du hattest mir dafür schon eine Vorgehensweise ans Herz gelegt, aber kriege es anscheinend einfach nicht hin, dass er eben nacheinander die Downloadlinks überprüft (insgesamt alle 82979 strings) . Kannst du mir da ggf. einen konkreten Vorschlag machen, wie man das integriert?
Habe schon Wochen gebraucht, um mir die "einfache" Version zusammenzubasteln Wink

Zum Thema Funktionalität.. der Code müsste eigentlich ohne Probleme ausführbar sein, wenn man die jeweiligen lokalen Dateipfade zum abspeichern der .idx und Textdateien entsprechend austauscht. Ansonsten greift ja lediglich auf einen ftp-Server zu, der öffentlich zugänglich ist. Wundert mich grad ziemlich, dass ich der Code nicht ausführbar ist. Welcher Teil lässt sich denn nicht ausführen?
Gruß und danke für die Geduld Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.04.2016, 21:38     Titel:
  Antworten mit Zitat      
Der urlwrite Befehl läuft bei mir u.a. mehrere Minuten...ich habe es dann bei 48Mb abgebrochen und diesen file verwendet.
Bei mir hat er 2 Dateien gefunden, die in der Liste stehen.

Code:


a1=2008:2015;
a2=repmat(a1,4,1);
a=reshape(a2,32,1);
b=repmat([1;2;3;4],8,1);
c=1:32;
d=[a b c'];

% Liste
IdentList = cell(9, 1);
IdentList{1,1} = '0000029590';
IdentList{2,1} = '0000003197';
IdentList{3,1} = '0000002070';
IdentList{4,1} = '0000002098';
IdentList{5,1} = '0000747435';
IdentList{6,1} = '0000313798';
IdentList{7,1} = '0000351483';
IdentList{8,1} = '0000109471';
IdentList{9,1} = '0000002809';

strzeros = {'';'0';'00';'000';'0000';'00000';'000000';'0000000';'00000000';'000000000'};

for i=1:1 % Achtung: auf einen file begrenzt
    root=['ftp://ftp.sec.gov/edgar/full-index/' num2str(d(i,1)) '/QTR' num2str(d(i,2)) '/form.idx'];
    % Indexdateien erstellen
    urlwrite(root, ['D:\SEC\10-K\form (' num2str(d(i,3)) ').idx'])

    % Indexdateien wurden erstellt
    % f = fullfile(['D:\SEC\10-K\form (' num2str(1) ').idx']); fullfile macht hier keinen Sinn
    text=fileread(['D:\SEC\10-K\form (' num2str(i) ').idx']);
    % Ausschließlich 10-K Filings suchen
    idx_data = transpose(regexpi(text,'10-K [^\n]*','match'));
    n=size(idx_data,1);

    for k=1:n
        link = idx_data{k,1};
        idxstart = strfind(link,'/data/');
        idxend = strfind(link,'/');
        num = link(idxstart+6:idxend(end)-1);
        addzeros = 10 - numel(num) + 1;
        % füge entsprechend Nullen hinzu für 10-stellige Zahl: hier im Bsp. 0000313798
        ident = [strzeros{addzeros} num];
        % Suche Nummer in Liste
        match = sum(strcmp(ident,IdentList));

        if match == 1
            % Nummer in Liste gefunden -> Download
            disp(['lade: ' link])
        end

    end
end
 


Die Nachricht im Command Window mittels disp ist natürlich nur zum Test. Hier müsste dann der Download erfolgen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nik9090
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 15.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2016, 23:21     Titel:
  Antworten mit Zitat      
Danke!! Ist echt eine riesen Hilfe, jetzt muss ich nur noch schauen, wie ich den Download-Loop reinbaue, wenn ich das richtig verstanden habe.. das sollte ich hoffentlich hinkriegen Rolling Eyes

Danke nochmals und LG,

Nik
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 17.04.2016, 23:40     Titel:
  Antworten mit Zitat      
Warum eine weitere Schleife? Aktuell wird eine Index Datei erzeugt, alle 10-K Einträge ermittelt und dann in einer weiteren Schleife die Einträge auf das CIK hin mit der Liste überprüft. Daher müsstest du hier

Code:

 if match == 1
            % Nummer in Liste gefunden -> Download
            disp(['lade: ' link])
        end
 


doch einfach nur den Link für den Download nutzen. Ist die 2. Schleife fertig, sind somit alle 10-k mit den gewünschten CIK heruntergeladen worden. Nun würde die 1. for Schleife die nächste Index Datei erzeugen und die Überprüfung geht von vorn los.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nik9090
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 15.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.04.2016, 23:51     Titel:
  Antworten mit Zitat      
Naja, der Link beinhaltet ja noch alle Informationen, da du den Schritt mit dem Trimmen:
Code:
for i=1:32;
    root = idx_data{i};
    root=strtrim(root(99:150));
     extention{i} = root;


ja herausgelassen hast. Daher sind das in dem Sinne noch keine Downloadlinks, sondern nach wie vor Strings, die erst noch zugeschnitten werden müssen, bevor ich direkt auf die "zugreifen" kann. Oder sehe ich das grad falsch?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Nik9090
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 15.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.04.2016, 12:16     Titel:
  Antworten mit Zitat      
Hallo,

habe hier jetzt nochmal etwas rumgebastelt, das mit dem Trimmen klappt, in dem ich den Code anpasse. Er kürzt dann die beiden Funde aus dem Beispiel auf:
Code:
lade: edgar/data/2098/0001026608-08-000057.txt
lade: edgar/data/3197/0001193125-08-058939.txt


Jetzt habe ich versucht, die beiden Bausteine des Downloadlinks wie im initialen Programm zu aneinanderzusetzen:
Code:
for i=1:32;
    m1='ftp://ftp.sec.gov/';
    m2 = extention{i};
 urlwrite([m1 m2],['D:\SEC\10-K\form\' num2str(i) '.txt'],'Timeout',10);  


Wenn ich es probiere, und an den Loop k=1:n anpasse, kann er das jedoch nicht ausführen. Kannst du mir sagen, wo mein Fehler liegt?
Hierzu nochmal das gesamte Programm inklusive meinem Vorschlag:

Code:

a1=2008:2015;
a2=repmat(a1,4,1);
a=reshape(a2,32,1);
b=repmat([1;2;3;4],8,1);
c=1:32;
d=[a b c'];

% Liste
IdentList = cell(9, 1);
IdentList{1,1} = '0000029590';
IdentList{2,1} = '0000003197';
IdentList{3,1} = '0000002070';
IdentList{4,1} = '0000002098';
IdentList{5,1} = '0000747435';
IdentList{6,1} = '0000313798';
IdentList{7,1} = '0000351483';
IdentList{8,1} = '0000109471';
IdentList{9,1} = '0000002809';

strzeros = {'';'0';'00';'000';'0000';'00000';'000000';'0000000';'00000000';'000000000'};

for i=1:1
    root=['ftp://ftp.sec.gov/edgar/full-index/' num2str(d(i,1)) '/QTR' num2str(d(i,2)) '/form.idx'];

    urlwrite(root, ['D:\SEC\10-K\form (' num2str(d(i,3)) ').idx'])

    text=fileread(['D:\SEC\10-K\form (' num2str(i) ').idx']);

    idx_data = transpose(regexpi(text,'10-K [^\n]*','match'));
    n=size(idx_data,1);

    for k=1:n
        link = idx_data{k,1};
        idxstart = strfind(link,'/data/');
        idxend = strfind(link,'/');
        num = link(idxstart+6:idxend(end)-1);
        addzeros = 10 - numel(num) + 1;
       
        ident = [strzeros{addzeros} num];

        match = sum(strcmp(ident,IdentList));
if match == 1

            link=strtrim(link(99:150));
           % Resultat, z.B: edgar/data/3197/0001193125-08-058939.txt.
           % Wo ist die Fehler im nachfolgenden Schritt?
           extention{k} = link;
           m1='ftp://ftp.sec.gov/';
           m2 = extention{k};
           urlwrite([m1 m2],['D:\SEC\10-K\form\' num2str(k) '.txt'],'Timeout',10);
        end


Danke im Voraus. Hast mir schon bis hierhin wahnsinnig geholfen!

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 19.04.2016, 21:41     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wenn ich es probiere, und an den Loop k=1:n anpasse, kann er das jedoch nicht ausführen. Kannst du mir sagen, wo mein Fehler liegt?


Nein, da für mich nicht nachvollziehbar. Was heißt nicht ausführen? Gibt es eine Fehlermeldung? Für mich macht der Code in der if Bedingung keinen Sinn.

Meinst du evtl. das?

Code:

if match == 1
            % Nummer in Liste gefunden -> Download
            disp(['lade:' link])
            idxstart = strfind(link,'edgar/');
            link = strtrim(link(idxstart:end));
            urlwrite(['ftp://ftp.sec.gov/' link],['D:\SEC\10-K\form\' num2str(k) '.txt'],'Timeout',10);
        end
 


Gruß DSP

P.S. ich habe unter der Woche nicht immer Zeit mich diesem Forum zu widmen, speziell wenn die Frage nicht mit einem 3-Zeiler beantwortet werden kann. Da ist eine Nachfrage per PN um Hilfe zu erhalten auch eher kontraproduktiv. Ich antworte schon noch auf Fragen, so fern ich die Antwort kenne, sowie Zeit und Lust dazu habe.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nik9090
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 15.04.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.04.2016, 01:35     Titel:
  Antworten mit Zitat      
Hallo,

danke vielmals für das Feedback! Es funktioniert nun einwandfrei!

Und bzgl. deiner Anmerkung. Ich werde es mir für die Zukunft merken.

Beste Grüße und nochmal VIELEN Dank!

Nik
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.