Anfängerfragen zum Programmieren mit PureBasic.
Fox
Beiträge: 75 Registriert: 08.08.2007 10:14
Kontaktdaten:
Beitrag
von Fox » 20.03.2008 09:00
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 » 20.03.2008 09:40
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
Fox
Beiträge: 75 Registriert: 08.08.2007 10:14
Kontaktdaten:
Beitrag
von Fox » 20.03.2008 11:36
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:
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 » 20.03.2008 11:39
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:
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
Fox
Beiträge: 75 Registriert: 08.08.2007 10:14
Kontaktdaten:
Beitrag
von Fox » 26.03.2008 12:40
hi.. danke hat super geklappt
AND51
Beiträge: 5220 Registriert: 01.10.2005 13:15
Beitrag
von AND51 » 26.03.2008 14:49
> anstrengensten war das Parsen der Strings
Kein Wunder.
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.
saimen
Beiträge: 172 Registriert: 26.01.2005 10:44
Wohnort: Passau
Kontaktdaten:
Beitrag
von saimen » 23.05.2009 21:57
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 » 23.05.2009 22:05
@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 » 23.05.2009 22:12
@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