chef1568
Goto Top

Programm erstellen für Dateidownload von geschützter Webseite und modifiziert in lokale SQL-DB schreiben

Hallo,

Ich seh gerade den Wald vor lauter Bäumen nicht^^

Ziel ist über eine CSV-Datei aus dem Internet Daten in einer lokalen SQL-Datenbank upzudaten.
Dazu sind folgende Arbeitsschritte erforderlich:
1. Anmelden an einer Webseite (Downloadbereich nur für angemeldete Benutzer verfügbar)
2. Starte Erstellung der CSV-Datei (mittels php-script auf der Homepage)
3. Diese Datei (variabler Dateiname) downloaden
4. Datei öffnen und ausgewählte Spalten in eine SQL-Datenbank schreiben

wie kann ich das am saubersten umsetzen?
- batch
- autoit
- VBS
- ...


vielen Dank schonmal für die Hilfe

Content-ID: 201073

Url: https://administrator.de/contentid/201073

Ausgedruckt am: 05.11.2024 um 06:11 Uhr

Epixc0re
Epixc0re 31.01.2013 um 13:09:56 Uhr
Goto Top
Maveric
Maveric 31.01.2013 um 13:19:19 Uhr
Goto Top

Das ist für den Download super :=), wäre auch meine Empfehlung.


Des Wieteren -------
Das Schreiben in deine MySQL DB machst du per Perl Skript.
Dabei iterierst du einfach durch die CSV und wendest auf
jede Zeile in der CSV einen Regex Ausdruck an. Dieser ist so
aufgebaut das er dir für jede Spalte Gruppen zurück gibt. Diese
kannst du abgreifen und über ein MySQL Statement in Perl direkt in
die DB schreiben.

Ich empfehle dir dazu noch, wenn deine
CSV mehr als 1000 Einträge hast, einen Batch Insert in dem Skript
zu bauen. Mit anderen Worten... Du baust ein Insert das so aussieht:

INSERT INTO table_name
VALUES (value1, value2, value3,...),(value1, value2, value3,...),(value1, value2, value3,...),(value1, value2, value3,...)

Gute Werte für so ein Insert sind bis zu 10.000 Wertepaare pro Insert.
Der Vorteil von dieser Methode ist, das er nicht für jedes einzelne Wertepaar
ein Insert vorbereiten muss. Du sparst enorm viel Zeit.

Nur damit du eine Einschätzung hast. Wenn du 50000 Zeilen einzeln in eine
DB schreibst dauert das ca 20min. Schreibst du 5 * 10000 in eine DB dauert das
15sec.

Viele Grüße Maveric
chef1568
chef1568 01.02.2013 um 14:07:51 Uhr
Goto Top

Hallo und danke schonmal für die Info.
Habe gestern wget installiert und lange probiert - aber es kommt immer zu Fehlermeldungen (bei deinem Beispiel "Port fehlt")
Mit anderen Befehlen wird entweder abgebrochen oder eine Datei gedownloaded mit dem Inhalt: "Autorisierung fehlt"


Hier die Anforderung an den Befehl:

1. login auf Seite: http://example.com/ --> mit "Post"
<form id="loginbox" method="post" action="http://example.com/login.php?action=process">
<input type="text" name="email_address" maxlength="50" style="width:170px;" />
...
<input type="password" name="password" maxlength="30" style="width:80px;" />
<input type="image" src="/button_login_small.gif" alt="Anmelden" title=" Anmelden " />
...
</form>
2. Anstoß zum Erstellen der CSV-Datei mit http://example.com/getExportCSV.php
3. Downloaden der erstellten Datei

Danke schonmal für die Hilfe
Epixc0re
Epixc0re 01.02.2013 aktualisiert um 14:11:52 Uhr
Goto Top
Login
wget --save-cookies=ZIELDATEI --post-data="POST_DATEN" http://URL


Download
wget --load-cookies pfad_zum_cookie download_link
chef1568
chef1568 01.02.2013 um 14:40:51 Uhr
Goto Top
Vielen Dank für die Antwort, werde ich später gleich mal ausprobieren.

Die beiden Befehle rufe ich ja bestimmt über eine Batch auf...
Gestern hatte ich das Problem, dass beim wget über ne Batch der Befehl X-Mal gesendet wurde - warum auch immer^^

@echo off
wget ...........
pause
chef1568
chef1568 05.02.2013 aktualisiert um 12:26:50 Uhr
Goto Top
Hallo nochmal,

habe leider noch Probleme mit dem Login.
Hab jetzt folgenden Befehl:
wget --keep-session-cookies --save-cookies cookies.txt --post-data "email_address=####@#######.de&password=######" http://example.com

Daraufhin kommt aber folgende Meldung:
...
HTTP Anforderung gesendet, warte auf Antwort... 200 OK
Länge: nicht spezifiziert [text/html]
In >>index.html<< speichern.

die cookies.txt enthält folgenden Inhalt:
  1. HTTP cookie file.
  2. Generated by Wget on 2013-02-05 00:22:05.
  3. Edit at your own risk.

.example.com TRUE / FALSE 0 XTCsid ############################



anscheinend klappt der login noch nicht ganz
wenn ich die cookies.txt wieder lade und das erstellen der CSV anstoße wird mir die Datei mit folgendem Inhalt erstellt:
ERROR: Not logged in!
Epixc0re
Epixc0re 05.02.2013 um 09:04:30 Uhr
Goto Top
Hallo,

dann verrate uns bitte zunächst:

a.) welche Software das ist wo Du dich einloggst (HTML Sample vom <form> Tag)
b.) welche Befehle Du genau ausgeführt hast.

Denn, ein spezifischer Ratschlag ohne diese Details ist nicht mehr möglich.
chef1568
chef1568 05.02.2013 aktualisiert um 12:27:57 Uhr
Goto Top
a) habe ich bereits oben gepostet:
<form id="loginbox" method="post" action="http://example.com/login.php?action=process;>"
<input type="text" name="email_address" maxlength="50" style="width:170px;" />
...
<input type="password" name="password" maxlength="30" style="width:80px;" />
<input type="image" src="/button_login_small.gif" alt="Anmelden" title=" Anmelden " />
...
</form>
Die eingesetzte Software ist xtcModified eCommerce Shopsoftware

b) und der Befehl:
wget --keep-session-cookies --save-cookies cookies.txt --post-data "email_address=####@#######.de&password=######" http://example.com

mfg