Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Websiteninhalt indexieren und in DB speichern... (https://www.delphipraxis.net/51123-websiteninhalt-indexieren-und-db-speichern.html)

unattended 6. Aug 2005 11:58


Websiteninhalt indexieren und in DB speichern...
 
Ist es möglich, ein Programm zu schreiben welches:

auf der Lufthansa Seite nach flügen sucht und jeweils die Uhrzeit, Flugnummer und Preise indexiert und in eine Datenbank schreibt ?


Ist soetwas möglich, wenn ja was sollte ich mir anschauen an Befehlen etc. pp.

Danke.

cya,
unattended

MrKnogge 6. Aug 2005 12:02

Re: Ist es möglich...
 
Du könntest dir die Internetseite in deinem programm laden (bspw. TWebbrowser), die Formular-felder etc ausfüllen, abschicken und das Ergebniss auswerten.

Ob die Lufthansa damit einverstanden ist, kann ich dir nicht sagen, müsstest du aber bei denen auf der Website finden (ich denke mal nein)

gruss

PS: Geb deinem Thread bitte mal einen Assagekräftigeren Titel.

unattended 6. Aug 2005 12:08

Re: Ist es möglich...
 
@MrKnogge

1)ja Lufthansa ist damit eiverstanden, habe jemanden der dort arbeitet. Jedoch können die mir keinen direkten Zugriff auf die Datenbank geben, das wäre ja noch schöner, könnte ich mal ebend Flugdaten ändern :mrgreen:

zu deinem vorschlag:
hört sich soweit nicht schlecht an, jedoch was meinst du mit auswerten ? Ich möchte/muss das so haben, dass ich das in eine datenbank schreiben kann.

MrKnogge 6. Aug 2005 12:11

Re: Ist es möglich...
 
eben, du hast dann quasi die seite wie du sie im InternetExplorer hättest in deinem Programm, und nun müsstest du dir die benötigten Info's raus parsen.

gruss

PS: Statt der zusage deine Bekannten der dort arbeitet meinte ich eher etwas schriftliches.

moritz 6. Aug 2005 12:13

Re: Websiteninhalt indexieren und in DB speichern...
 
Wieso die Seite in einem TWebbrowser parsen? Es reicht doch vollkommen, eine ganz normale Anfrage abzugeben und den Rückgabequelltext mit Regulären Ausdrücken auszuwerten, oder? Also so würde ich an die Sache rangehen.

unattended 6. Aug 2005 12:17

Re: Websiteninhalt indexieren und in DB speichern...
 
hi,
ja habe was schriftliches. Ich meinte eher, das mein Bekannter das bei Lufthansa geregelt habe. Also ich habe hier n Papier mit echter Unterschrift von Lufthansa liegen.
Das einzige was ich nicht darf ist die Daten für kommerzielle zwecke zu entwenden, was ich ja nicht mache oder will.


zum parsen:
Gut, was schlägst du denn vor wie ich da was parsen kann, sodass ich das optimal habe ? Habe sowas noch nie gemacht. Hast du da eventuell beispiele zur Hand ?

@moritz
hast du ein beispiel, welches das mal simuliert ? Hört sich ja auch logisch an. Das problem was ich wohl hätte ist, wie die Daten dann auslesen kann.

danke schonmal.

cya,
unattended

moritz 6. Aug 2005 12:33

Re: Websiteninhalt indexieren und in DB speichern...
 
Also, die Sache ist so: Wenn du das über einen TWebbrowser machst, dann ist das ganz einfach Resourcenverschwendung, abgesehen davon ist das eine ziemlich unsaubere Lösung - Wieso eine Seite anzeigen, wenn man eh nur am Quellcode interessiert ist?
Wenn man jetzt zum Beispiel das Lufthansa-Formular hast:
Code:
<form name="fmBooking" method="post" target="_parent" action="https://aero.lufthansa.com/aerodyn/fb_main.aero">
sind die Interessanten Sachen für dich method und action. Method sagt dir den "Übertragungsweg" (In diesem Fall post, der etwas schwerer zu implementieren ist als get, dafür allerdings weniger probleme wegen codierung etc. bereitet). Action sagt dir das Ziel. Jetzt musst du dir noch die Formularfelder raussuchen, die du haben willst, und mit dem ganzen Zeugs dann entweder idHTTP füttern oder das ganze selber Implementieren. Dann bekommst du als Rückgabe den Quelltext der Ergebnisseite, den du dann mit Regulären Ausdrücken (Dazu gibts genug Themen hier) auswerten kannst, und schon bist du bei deinen Ergebnissen.

Gruß

unattended 6. Aug 2005 12:44

Re: Websiteninhalt indexieren und in DB speichern...
 
gut, soweit wäre mir das eventuell auch noch klar, wobei ich gerade nicht weiß wie ich idhttp damit füttern soll, aber ich denke das finde ich schon irgendwo.

Aber zum auswerten:
Du sagst es gibt genug im Forum ? Nach was sollte ich denn suchen, hab schon nach "webseite auswerten", daten auswerten, auswerten gesuht, aber nichts brauchbares gefunden, womit ich dieses Problem lösen könnte. Ich habe z.B. hier mal ein teil der Webseite:

Delphi-Quellcode:
 <tr>
  <td valign="bottom" width="90" class="axisM">
   [url="fb_main.aero?action=details&fb_seg=1&fb_con=0"]LH247[/url]


    [b]<nobr>06:55-08:00</nobr>[/b]
  </td>
  <td valign="bottom" width="90" class="axisM">
   [url="fb_main.aero?action=details&fb_seg=1&fb_con=1"]LH249[/url]


    [b]<nobr>08:15-09:20</nobr>[/b]
  </td>
  <td valign="bottom" width="90" class="axisM">
   [url="fb_main.aero?action=details&fb_seg=1&fb_con=2"]LH251[/url]


    [b]<nobr>09:55-11:00</nobr>[/b]
  </td>
  <td valign="bottom" width="90" class="axisM">
   [url="fb_main.aero?action=details&fb_seg=1&fb_con=3"]LH253[/url]<font color=""><sup>(1)</sup></font>


    [b]<nobr>10:55-12:00</nobr>[/b]
  </td>
  <td valign="bottom" width="90" class="axisM">
   [url="fb_main.aero?action=details&fb_seg=1&fb_con=4"]LH255[/url]<font color=""><sup>(1)</sup></font>


    [b]<nobr>12:25-13:30</nobr>[/b]
  </td>
 </tr>
 <tr valign="top">
  <td valign="top" width="115" class="axisM">
   <span class="hdgM">Hinflug:</span>
[url="popup.aero?content=ci_main.aero%3Faction%3Dcity%26city%3DDUS%26popup%3D1"]DUS[/url]-[url="popup.aero?content=ci_main.aero%3Faction%3Dcity%26city%3DBER%26popup%3D1"]TXL[/url]
7.Aug2005
  </td>
  <td colspan="7"></td>
 </tr>
 <tr valign="bottom">
  <td valign="bottom" class="axisM"><spacer type="block" height="10" width="51">
  </td>
  <td valign="top" colspan="7" width="482" class="axisM">
   
  </td>
 </tr>
 <tr valign="top">
  <td valign="top" width="115" class="axisM">
    [url="fb_main.aero?action=details&fb_seg=0&fb_con=0"]LH252[/url]<font color=""><sup>(1)</sup></font>


    [b]<nobr>10:55-12:00</nobr>[/b]


   
  </td>
  <td valign="top" width="12" class="axisM"></td>
  <td valign="top" width="90" class="priceM">[url="fb_main.aero?action=price&fb_select0=0~0~K&fb_select1=1~0~G"]&euro;285,37[/url][img]/img/fly/blank.gif[/img]
[img]/img/fly/blank.gif[/img]</td>
  <td valign="top" width="90" class="priceM">[url="fb_main.aero?action=price&fb_select0=0~0~K&fb_select1=1~1~Y"]&euro;348,37[/url][img]/img/fly/blank.gif[/img]
[img]/img/fly/blank.gif[/img]</td>
  <td valign="top" width="90" class="priceM">[url="fb_main.aero?action=price&fb_select0=0~0~K&fb_select1=1~2~Y"]&euro;348,37[/url][img]/img/fly/blank.gif[/img]
[img]/img/fly/blank.gif[/img]</td>
  <td valign="top" width="90" class="priceM">[url="fb_main.aero?action=price&fb_select0=0~0~K&fb_select1=1~3~K"]&euro;241,37[/url][img]/img/fly/blank.gif[/img]
[img]/img/fly/blank.gif[/img]</td>
  <td valign="top" width="90" class="priceM">[url="fb_main.aero?action=price&fb_select0=0~0~K&fb_select1=1~4~L"]&euro;205,37[/url][img]/img/fly/blank.gif[/img]
[img]/img/fly/blank.gif[/img]</td>
  <td valign="top" width="12" class="axisM"></td>
 </tr>
 <tr valign="top">
  <td valign="top" width="115" class="axisM">
    [url="fb_main.aero?action=details&fb_seg=0&fb_con=1"]LH256[/url]<font color=""><sup>(1)</sup></font>


    [b]<nobr>14:30-15:35</nobr>[/b]


   
  </td>
  <td valign="top" width="12" class="axisM"></td>
  <td valign="top" width="90" class="priceM">[url="fb_main.aero?action=price&fb_select0=0~1~K&fb_select1=1~0~G"]&euro;285,37[/url][img]/img/fly/blank.gif[/img]
[img]/img/fly/blank.gif[/img]</td>
  <td valign="top" width="90" class="priceM">[url="fb_main.aero?action=price&fb_select0=0~1~K&fb_select1=1~1~Y"]&euro;348,37[/url][img]/img/fly/blank.gif[/img]
[img]/img/fly/blank.gif[/img]</td>
  <td valign="top" width="90" class="priceM">[url="fb_main.aero?action=price&fb_select0=0~1~K&fb_select1=1~2~Y"]&euro;348,37[/url][img]/img/fly/blank.gif[/img]
[img]/img/fly/blank.gif[/img]</td>
  <td valign="top" width="90" class="priceM">[url="fb_main.aero?action=price&fb_select0=0~1~K&fb_select1=1~3~K"]&euro;241,37[/url][img]/img/fly/blank.gif[/img]
[img]/img/fly/blank.gif[/img]</td>
  <td valign="top" width="90" class="priceM">[url="fb_main.aero?action=price&fb_select0=0~1~K&fb_select1=1~4~L"]&euro;205,37[/url][img]/img/fly/blank.gif[/img]
[img]/img/fly/blank.gif[/img]</td>
  <td valign="top" width="12" class="axisM"></td>
 </tr>
So, wie komme ich da z.B. an den Flug Lh252 ran, mit dem ersten Preis: 285,37€ ?

moritz 6. Aug 2005 12:56

Re: Websiteninhalt indexieren und in DB speichern...
 
Dafür musst du den Quelltext ein bisschen analysieren. Ich hab ihn mir ein bisschen angeschaut, und folgendes ist dabei rausgekommen:
1.) Zu jedem Flug gibt es einen Link:
Code:
[url="fb_main.aero?action=details&fb_seg=1&fb_con=0"]LH247[/url]
2.) Dieser Link enthält eine Segment und einen Con(tinuierliche?) ID
Code:
[url="fb_main.aero?action=details&[b]fb_seg=1[/b]&[b]fb_con=0[/b]"]LH247[/url]
3.) Genau diese ID's finden sich beim Preis auch:
Code:
[url="fb_main.aero?action=price&fb_select0=0~0~K&fb_select1=[b]1[/b]~[b]0[/b]~G"]&euro;285,37[/url]
Und genau auf diese Weise musst du diese Webseite auswerten. Das wäre zum Beispiel schon die Möglichkeit, an den Preis von Flug LH247 ranzukommen. Erst die ID's aus 2. auslesen, dann genau diese in 3. suchen. Und zu [google]Regulären AND Ausdrücke[/google]n sagt dir Google genug.

Gruß

unattended 6. Aug 2005 13:16

Re: Websiteninhalt indexieren und in DB speichern...
 
hmm,
ich hab mir jetzt paar sachen von Google angeschaut, unter anderem die Erklärung von regulären Ausdrücken und Anwendung in der MSDN.

Nur versteh ich das nicht genau wie ich das auf meine Sache überleiten soll, geschweige wie der Suchstring lauten muss.

cya,
unattended


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz