Preis Auslesen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Fox
Beiträge: 75
Registriert: 08.08.2007 10:14
Kontaktdaten:

Preis Auslesen

Beitrag von Fox »

Hi Leute... Ich hab ein Poblem
Ich will von meiner Ebay Auktion den aktuellen Preis auslesen.
Ich habs schon versucht im Quelltext rumzusuchen, das geht auch, aber wenn ich mit #PB_Web_HtmlCode arbeite, weiss ich nicht wie ich den string auslesen soll, in dem der preis enthalten ist.

Hier meine Auktion: http://cgi.ebay.de/Nokia-6680-Handy-256 ... dZViewItem

Code: Alles auswählen

Adresse$ = "http://cgi.ebay.de/Nokia-6680-Handy-256MB-Speicherkarte-Cover_W0QQitemZ250226956408QQihZ015QQcategoryZ115579QQssPageNameZWDVWQQrdZ1QQcmdZViewItem"


Mein ach so sinnvoller Code...

If OpenWindow(0,600,600,590,590,"Ebay SMS",#PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
 WebGadget(0,0,0,590,590,Adresse$,#PB_Web_HtmlCode)
  Repeat 
    Until WaitWindowEvent() = #PB_Event_CloseWindow
    EndIf

Ich hab keine Ahnung wie ich das auslesen soll, vielleicht könnt ihr mir ja helfen

Danke schonmal

Fox
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Ich bastel mal was, ok? Hab auch schonmal nen PB-Memberlist-Reader gebastelt ;)

Gruss
PMTheQuick :)

EDIT: So ich habs. Habs mit mehreren Ebay-Angeboten getestet, funzt perfekt. Am anstrengensten war das Parsen der Strings ;)

Code: Alles auswählen

InitNetwork() 
ConnectionID = OpenNetworkConnection("cgi.ebay.de", 80) 

EbayAngebot$ = "http://cgi.ebay.de/Nokia-6680-Handy-256MB-Speicherkarte-Cover_W0QQitemZ250226956408QQihZ015QQcategoryZ115579QQssPageNameZWDVWQQrdZ1QQcmdZViewItem"
; EbayAngebot$ = "http://cgi.ebay.de/Alfa-Romeo-2000-Spider-Bj-77_W0QQitemZ250224389117QQihZ015QQcategoryZ9834QQssPageNameZWDVWQQrdZ1QQcmdZViewItem"
; EbayAngebot$ = "http://cgi.ebay.de/Alfa-146-ti-2l-16v-mit-klima-aus-1-hand-scheckheft-145_W0QQitemZ220213942594QQihZ012QQcategoryZ9834QQssPageNameZWDVWQQrdZ1QQcmdZViewItem"

If ConnectionID 
  com$="GET "+EbayAngebot$+" HTTP/1.1"+Chr(13)+Chr(10) 
  com$=com$+"Accept: */*"+Chr(13)+Chr(10) 
  com$=com$+"Accept: text/html"+Chr(13)+Chr(10) 
  com$=com$+"Host: "+host$+Chr(13)+Chr(10) 
  com$=com$+"User-Agent: Ebay CVS Parser"+Chr(13)+Chr(10) 
  com$=com$+Chr(13)+Chr(10) 
  Res = SendNetworkData(ConnectionID,@com$,Len(com$)) 

  time = GetTickCount_()
  CreateFile(0, "site.txt")
  Repeat 
    Delay(10) 
    Result = NetworkClientEvent(ConnectionID)
    If Result = 2
      Content$ = Space(14500) 
      ReceiveNetworkData(ConnectionID,@Content$,14500) 
      time = GetTickCount_()
      WriteString(0, Content$)
    ElseIf Result = 0
      If GetTickCount_()-time > 3000
        Ok = 1
      EndIf
    EndIf
  Until Ok = 1 
  CloseNetworkConnection(ConnectionID) 
  CloseFile(0)
  ReadFile(0, "site.txt")
  ;//--></script><tr><td colspan="+Chr(34)+"4"+Chr(34)+" bgcolor="+Chr(34)+"#ffffff"+Chr(34)+" style="+Chr(34)+"padding:30px 0 5px 5px"+Chr(34)+"><span style="+Chr(34)+"font: normal 10pt arial;"+Chr(34)+"><a href="+Chr(34)+"#ebayphotohosting"+Chr(34)+">Größeres Bild</a></span></td></tr></table></td></tr></table></td><td width="+Chr(34)+"6"+Chr(34)+"><img src="+Chr(34)+"http://pics.ebaystatic.com/aw/pics/s.gif"+Chr(34)+" width="+Chr(34)+"6"+Chr(34)+" height="+Chr(34)+"1"+Chr(34)+"></td></tr></table></td><td valign="+Chr(34)+"top"+Chr(34)+" width="+Chr(34)+"100%"+Chr(34)+"><div id="+Chr(34)+"FastVIPDetails+Chr(34)+""><table width="+Chr(34)+"100%+Chr(34)+"" cellpadding="+Chr(34)+"1"+Chr(34)+" cellspacing="+Chr(34)+"4"+Chr(34)+"><tr><td colspan="+Chr(34)+"4"+Chr(34)+"><img src="+Chr(34)+"+Chr(34)+"http://pics.ebaystatic.com/aw/pics/s.gif+Chr(34)+"" width="+Chr(34)+"1"+Chr(34)+" height="+Chr(34)+"5"+Chr(34)+"></td></tr><tr><td align="+Chr(34)+"left"+Chr(34)+" nowrap width="+Chr(34)+"25%"+Chr(34)+"><span id="+Chr(34)+"DetailsCurrentBidText+Chr(34)+"" class="+Chr(34)+"titlePurchase"+Chr(34)+">Aktuelles Gebot:</span></td><td nowrap><span id="+Chr(34)+"DetailsCurrentBidValue+Chr(34)+"" class="+Chr(34)+"sectiontitle+Chr(34)+""><b>
  Repeat
    s$ = ReadString(0)
    s$ = ReplaceString(s$, Chr(9), "")
    If Mid(s$, 1, Len("</td><td class="+Chr(34)+"boldsmall"+Chr(34)+" width="+Chr(34)+"60%"+Chr(34)+">")) = "</td><td class="+Chr(34)+"boldsmall"+Chr(34)+" width="+Chr(34)+"60%"+Chr(34)+">"
      s$ = ReplaceString(s$, "</td><td class="+Chr(34)+"boldsmall"+Chr(34)+" width="+Chr(34)+"60%"+Chr(34)+">", "")
      s$ = ReplaceString(s$, "<span class="+Chr(34)+"normalsmall"+Chr(34)+"></span></td></tr><tr><td valign="+Chr(34)+"top"+Chr(34)+" nowrap class="+Chr(34)+"normalsmall"+Chr(34)+" style="+Chr(34)+"padding-top:13px;"+Chr(34)+">", "")
      Debug "Aktueller Preis: "+s$
    EndIf
    ms$ = "//--></script><tr><td colspan="+Chr(34)+"4"+Chr(34)+" bgcolor="+Chr(34)+"#ffffff"+Chr(34)+" style="+Chr(34)+"padding:30px 0 5px 5px"+Chr(34)+"><span style="+Chr(34)+"font: normal 10pt arial;"+Chr(34)+"><a href="+Chr(34)+"#ebayphotohosting"+Chr(34)+">Größeres Bild</a></span></td></tr></table></td></tr></table></td><td width="+Chr(34)+"6"+Chr(34)+"><img src="+Chr(34)+"http://pics.ebaystatic.com/aw/pics/s.gif"+Chr(34)+" width="+Chr(34)+"6"+Chr(34)+" height="+Chr(34)+"1"+Chr(34)+"></td></tr></table></td><td valign="+Chr(34)+"top"+Chr(34)+" width="+Chr(34)+"100%"+Chr(34)+"><div id="+Chr(34)+"FastVIPDetails"+Chr(34)+"><table width="+Chr(34)+"100%"+Chr(34)+" cellpadding="+Chr(34)+"1"+Chr(34)+" cellspacing="+Chr(34)+"4"+Chr(34)+"><tr><td colspan="+Chr(34)+"4"+Chr(34)+"><img src="+Chr(34)+"http://pics.ebaystatic.com/aw/pics/s.gif"+Chr(34)+" width="+Chr(34)+"1"+Chr(34)+" height="+Chr(34)+"5"+Chr(34)+"></td></tr><tr><td align="+Chr(34)+"left"+Chr(34)+" nowrap width="+Chr(34)+"25%"+Chr(34)+"><span id="+Chr(34)+"DetailsCurrentBidText"+Chr(34)+" class="+Chr(34)+"titlePurchase"+Chr(34)+">Aktuelles Gebot:</span></td><td nowrap><span id="+Chr(34)+"DetailsCurrentBidValue"+Chr(34)+" class="+Chr(34)+"sectiontitle"+Chr(34)+"><b>"
    If Mid(s$, 1, Len(ms$)) = ms$
      s$ = ReplaceString(s$, ms$, "")
      For i = 1 To Len(s$)
        c$ = Mid(s$, i, 1)
        If a = 3
          Goto raus
        Else
          t$ + c$
        EndIf
        If a = 1 Or a = 2
          a + 1
        EndIf
        If c$ = ","
          a = 1
        EndIf
      Next i
      raus:
      Debug "Aktueller Preis: "+t$
    EndIf
  Until Eof(0) <> 0
  CloseFile(0)
EndIf
Benutzeravatar
Fox
Beiträge: 75
Registriert: 08.08.2007 10:14
Kontaktdaten:

Beitrag von Fox »

hey :) danke für die schnelle antwort... Super der code
noch ne frage
wenn ich den preis in die zwischenablage machen will, mach ich das ja mit dem code:

Code: Alles auswählen

SetClipboardText("Aktuelles Gebot:"+s$)


aber dann wenn ich es wo einfüge gibt er immer nur Aktuelles Gebot: aus und nicht den preis dazu

was passt nicht?

Danke dir
PMTheQuick
Beiträge: 630
Registriert: 05.05.2005 19:06

Beitrag von PMTheQuick »

Fox hat geschrieben:hey :) danke für die schnelle antwort... Super der code
noch ne frage
wenn ich den preis in die zwischenablage machen will, mach ich das ja mit dem code:

Code: Alles auswählen

SetClipboardText("Aktuelles Gebot:"+s$)


aber dann wenn ich es wo einfüge gibt er immer nur Aktuelles Gebot: aus und nicht den preis dazu

was passt nicht?

Danke dir
So gehts perfekt:

Code: Alles auswählen

InitNetwork() 
ConnectionID = OpenNetworkConnection("cgi.ebay.de", 80) 

EbayAngebot$ = "http://cgi.ebay.de/Nokia-6680-Handy-256MB-Speicherkarte-Cover_W0QQitemZ250226956408QQihZ015QQcategoryZ115579QQssPageNameZWDVWQQrdZ1QQcmdZViewItem"
; EbayAngebot$ = "http://cgi.ebay.de/Alfa-Romeo-2000-Spider-Bj-77_W0QQitemZ250224389117QQihZ015QQcategoryZ9834QQssPageNameZWDVWQQrdZ1QQcmdZViewItem"
; EbayAngebot$ = "http://cgi.ebay.de/Alfa-146-ti-2l-16v-mit-klima-aus-1-hand-scheckheft-145_W0QQitemZ220213942594QQihZ012QQcategoryZ9834QQssPageNameZWDVWQQrdZ1QQcmdZViewItem"

If ConnectionID 
  com$="GET "+EbayAngebot$+" HTTP/1.1"+Chr(13)+Chr(10) 
  com$=com$+"Accept: */*"+Chr(13)+Chr(10) 
  com$=com$+"Accept: text/html"+Chr(13)+Chr(10) 
  com$=com$+"Host: "+host$+Chr(13)+Chr(10) 
  com$=com$+"User-Agent: Ebay CVS Parser"+Chr(13)+Chr(10) 
  com$=com$+Chr(13)+Chr(10) 
  Res = SendNetworkData(ConnectionID,@com$,Len(com$)) 

  time = GetTickCount_()
  CreateFile(0, "site.txt")
  Repeat 
    Delay(10) 
    Result = NetworkClientEvent(ConnectionID)
    If Result = 2
      Content$ = Space(14500) 
      ReceiveNetworkData(ConnectionID,@Content$,14500) 
      time = GetTickCount_()
      WriteString(0, Content$)
    ElseIf Result = 0
      If GetTickCount_()-time > 3000
        Ok = 1
      EndIf
    EndIf
  Until Ok = 1 
  CloseNetworkConnection(ConnectionID) 
  CloseFile(0)
  ReadFile(0, "site.txt")
  ;//--></script><tr><td colspan="+Chr(34)+"4"+Chr(34)+" bgcolor="+Chr(34)+"#ffffff"+Chr(34)+" style="+Chr(34)+"padding:30px 0 5px 5px"+Chr(34)+"><span style="+Chr(34)+"font: normal 10pt arial;"+Chr(34)+"><a href="+Chr(34)+"#ebayphotohosting"+Chr(34)+">Größeres Bild</a></span></td></tr></table></td></tr></table></td><td width="+Chr(34)+"6"+Chr(34)+"><img src="+Chr(34)+"http://pics.ebaystatic.com/aw/pics/s.gif"+Chr(34)+" width="+Chr(34)+"6"+Chr(34)+" height="+Chr(34)+"1"+Chr(34)+"></td></tr></table></td><td valign="+Chr(34)+"top"+Chr(34)+" width="+Chr(34)+"100%"+Chr(34)+"><div id="+Chr(34)+"FastVIPDetails+Chr(34)+""><table width="+Chr(34)+"100%+Chr(34)+"" cellpadding="+Chr(34)+"1"+Chr(34)+" cellspacing="+Chr(34)+"4"+Chr(34)+"><tr><td colspan="+Chr(34)+"4"+Chr(34)+"><img src="+Chr(34)+"+Chr(34)+"http://pics.ebaystatic.com/aw/pics/s.gif+Chr(34)+"" width="+Chr(34)+"1"+Chr(34)+" height="+Chr(34)+"5"+Chr(34)+"></td></tr><tr><td align="+Chr(34)+"left"+Chr(34)+" nowrap width="+Chr(34)+"25%"+Chr(34)+"><span id="+Chr(34)+"DetailsCurrentBidText+Chr(34)+"" class="+Chr(34)+"titlePurchase"+Chr(34)+">Aktuelles Gebot:</span></td><td nowrap><span id="+Chr(34)+"DetailsCurrentBidValue+Chr(34)+"" class="+Chr(34)+"sectiontitle+Chr(34)+""><b>
  Repeat
    s$ = ReadString(0)
    s$ = ReplaceString(s$, Chr(9), "")
    If Mid(s$, 1, Len("</td><td class="+Chr(34)+"boldsmall"+Chr(34)+" width="+Chr(34)+"60%"+Chr(34)+">")) = "</td><td class="+Chr(34)+"boldsmall"+Chr(34)+" width="+Chr(34)+"60%"+Chr(34)+">"
      s$ = ReplaceString(s$, "</td><td class="+Chr(34)+"boldsmall"+Chr(34)+" width="+Chr(34)+"60%"+Chr(34)+">", "")
      s$ = ReplaceString(s$, "<span class="+Chr(34)+"normalsmall"+Chr(34)+"></span></td></tr><tr><td valign="+Chr(34)+"top"+Chr(34)+" nowrap class="+Chr(34)+"normalsmall"+Chr(34)+" style="+Chr(34)+"padding-top:13px;"+Chr(34)+">", "")
      SetClipboardText("Aktueller Preis: "+s$)
    EndIf
    ms$ = "//--></script><tr><td colspan="+Chr(34)+"4"+Chr(34)+" bgcolor="+Chr(34)+"#ffffff"+Chr(34)+" style="+Chr(34)+"padding:30px 0 5px 5px"+Chr(34)+"><span style="+Chr(34)+"font: normal 10pt arial;"+Chr(34)+"><a href="+Chr(34)+"#ebayphotohosting"+Chr(34)+">Größeres Bild</a></span></td></tr></table></td></tr></table></td><td width="+Chr(34)+"6"+Chr(34)+"><img src="+Chr(34)+"http://pics.ebaystatic.com/aw/pics/s.gif"+Chr(34)+" width="+Chr(34)+"6"+Chr(34)+" height="+Chr(34)+"1"+Chr(34)+"></td></tr></table></td><td valign="+Chr(34)+"top"+Chr(34)+" width="+Chr(34)+"100%"+Chr(34)+"><div id="+Chr(34)+"FastVIPDetails"+Chr(34)+"><table width="+Chr(34)+"100%"+Chr(34)+" cellpadding="+Chr(34)+"1"+Chr(34)+" cellspacing="+Chr(34)+"4"+Chr(34)+"><tr><td colspan="+Chr(34)+"4"+Chr(34)+"><img src="+Chr(34)+"http://pics.ebaystatic.com/aw/pics/s.gif"+Chr(34)+" width="+Chr(34)+"1"+Chr(34)+" height="+Chr(34)+"5"+Chr(34)+"></td></tr><tr><td align="+Chr(34)+"left"+Chr(34)+" nowrap width="+Chr(34)+"25%"+Chr(34)+"><span id="+Chr(34)+"DetailsCurrentBidText"+Chr(34)+" class="+Chr(34)+"titlePurchase"+Chr(34)+">Aktuelles Gebot:</span></td><td nowrap><span id="+Chr(34)+"DetailsCurrentBidValue"+Chr(34)+" class="+Chr(34)+"sectiontitle"+Chr(34)+"><b>"
    If Mid(s$, 1, Len(ms$)) = ms$
      s$ = ReplaceString(s$, ms$, "")
      For i = 1 To Len(s$)
        c$ = Mid(s$, i, 1)
        If a = 3
          Goto raus
        Else
          t$ + c$
        EndIf
        If a = 1 Or a = 2
          a + 1
        EndIf
        If c$ = ","
          a = 1
        EndIf
      Next i
      raus:
      SetClipboardText("Aktueller Preis: "+t$)
    EndIf
  Until Eof(0) <> 0
  CloseFile(0)
EndIf
Benutzeravatar
Fox
Beiträge: 75
Registriert: 08.08.2007 10:14
Kontaktdaten:

Beitrag von Fox »

hi.. danke hat super geklappt
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

> anstrengensten war das Parsen der Strings
Kein Wunder. :wink:
Wenn du PB 4.20 benutzt, kannst du ganze bequem die Regulären Ausdrücke (RegExp) benutzen, anstatt nach der "Steinzeitmethode" mit FindString(), ReplaceString() und Mid() zu handeln.

Und warum lädst du die Seite manuell runter? Ginge doch auch mit der API URLDownloadToFile_() aber das Runterladen geht noch einfacher:
Nämlich mit ReceiveHTTPFile().
Alles PB-native Befehle. :allright:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
saimen
Beiträge: 172
Registriert: 26.01.2005 10:44
Wohnort: Passau
Kontaktdaten:

Beitrag von saimen »

kann es sein dass wenn ich den Quellcode mit #PB_Web_HtmlCode auslese, nicht der gesamte Code ausgelesen wird sondern nur bis zu einer bestimmten Zeichenanzahl?
Hab das nämlich bei einer "automatisch generierten" seite probiert, und kann nie den gesamten html Quellcode auslesen. Da die seite selbst generiert wird kann ich sie auch nicht speichern...
Was kann ich da machen um an den ganzen Code ran zu kommen?
Marc-21
Beiträge: 39
Registriert: 11.02.2008 19:37

Beitrag von Marc-21 »

@And51

Kannst du das genauer erklären das mit dem RegExp in der hilfe finde ich das so nicht danke.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

@Marc-21: Du weißt aber schon, dass der Thread ein jahr alt ist?

>Kannst du das genauer erklären das mit dem RegExp in der hilfe finde ich das so nicht danke.
RegularExpressions.
Win11 x64 | PB 6.20
Antworten