Internetseite text auslesen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Internetseite text auslesen

Beitrag von zigapeda »

Hallo

habe eine frage: Wenn ich von einer bestimmten Internetseite eine Zahl auslesen will wie mache ich das? Ich möchte aber nur die URL und eine Variable verwenden und nicht irgendetwas mit URLDownloadtofile oder so.
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Habe noch eine frage und zwar wie kann ich nur eine URL aufrufen ohne das die seite irgendwo angezeigt wird? Gibt es irgend welche libs oder so?
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Icke
Beiträge: 143
Registriert: 08.09.2004 13:19

Beitrag von Icke »

Präzisiere mal mit Beispiel, ich weiss nicht was du meinst.
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

ich kann eine zahl/Wert ausgeben, die/der von einer anderen zahl/Wert abhängt. Die zahl/wert kann ich mit php aus der url auslesen.
Ein beispiel:
Ich möchte ein String MD5 Verschlüsseln dann geb ich die url von meinem php script ein, dann ein ? und dann die variable:
[url]http:zigapeda.funpic.de/md5.php?wort=hallo[/url] jetzt möchte ich nur die eine zeile auslesen und das ohne die seite runter zu laden und danach wieder zu löschen usw. das soll im hintergrund passieren ohne das der user etwas mitbekommt.

Und zu meiner zweiten frage ich habe ein phpscript das eine Textdatei erstellt und zwar auch wieder mit variablen die in der url bestimmt werden. um das zu machen brauch ich aber kein webgadget weil eigentlich muss ich ja nur die url aufrufen aber nicht die seite anzeigen.
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag von MLK »

diesen code kannst du dir ja anpassen (speziell "space($FFF)") und zu ner prozedur machen. am besten nachdem du das script angepasst hast, dann sparst du ein paar bytes und kannst den wert den du brauchst leichter herausfischen.

Code: Alles auswählen

Server$ = "zigapeda.zi.funpic.de"
ScriptPath$ = "/md5.php"
PostData$ = "wort=hallo"

If InitNetwork() = #False : Debug "can't init network!" : Else
  ServerID = OpenNetworkConnection(Server$, 80)
  If ServerID = #False : Debug "can't connect to '" + Server$ + "' !" : Else
    Request$ = "POST " + ScriptPath$ + " HTTP/1.1" + #CRLF$
    Request$ + "Host: " + Server$ + #CRLF$
    Request$ + #CRLF$
    Request$ + PostData$ + #CRLF$
    
    SendNetworkString(ServerID, Request$)
    
    Response$ = Space($FFF)
    ReceiveNetworkData(ServerID, @Response$, Len(Response$))
    
    CloseNetworkConnection(ServerID)
    
    MessageRequester("", Response$)
  EndIf
EndIf

bei der geschichte mit der textdatei musst du halt nur das script aufrufen ohne auf antwort vom server zu warten.
Constant not found: #vk_shit
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

MLK hat geschrieben:diesen code kannst du dir ja anpassen (speziell "space($FFF)")[...]
Wie meinst du das anpassen was muss ich da reinschreiben?
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag von MLK »

zigapeda hat geschrieben:
MLK hat geschrieben:diesen code kannst du dir ja anpassen (speziell "space($FFF)")[...]
Wie meinst du das anpassen was muss ich da reinschreiben?

Du rufst ja ein Skript auf. Dieses hast du wahrscheinlich selber geschrieben, weswegen du auch wissen wirst was es für eine Datei erzeugt und wie groß ihr Inhalt ist. Dieser Inhalt, mit ihrer bekannten größe, wird nach deiner Anfrage als Antwort an dich zurückgeschickt. Der Buffer der diese Antwort entgegennehmen soll (Response$), muss also groß genug sein um diese Antwort inklusive Header (wie groß dieser ist musst du selber nachschauen) entgegennehmen zu können. An dieser Stelle kannst du halt durch anpassung der Größe dieses Buffers etwas optimieren.

Die benötigte Gesamtgröße ergibt sich aus der Größe des Headers..

Code: Alles auswählen

HTTP/1.1 200 OK
Date: Sat, 30 Apr 2005 15:54:32 GMT
Server: Apache
X-Powered-By: PHP/4.3.11
Content-Length: 201
Content-Type: text/html; charset=ISO-8859-1

..und der Größe dessen was dein Skript zurückgeliefert.

Momentan beläuft sich diese Größe auf, wie man im Header nachlesen kann: [Content-Length:] 201 (Bytes).

Wenn du dein Skript jetzt dahingehend änderst, dass es wirklich nur den MD5-Wert zurückliefert, ohne den unnötigen HTML-Kram, dann wird sich diese Größe noch verringern und die Geschwindigkeit des Abrufes erhöhen.

Ändere also das Skript, finde dann heraus wie groß der Buffer sein muss um die Antwort vom Server entgegenzunehmen und ändere den Code dementsprechend.




Wenn es dir aber nicht auf Geschwindigkeit und Anpassung ankommt, dann kannst du auch folgendes machen:

Code: Alles auswählen

Buffer$ = Space($FF) 
Repeat
  inLen = ReceiveNetworkData(ServerID, @Buffer$, Len(Buffer$)) 
  Response$ + Left(Buffer$, inLen) 
Until inLen < Len(Buffer$)
Constant not found: #vk_shit
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Ok der code funktioniert aber ich hab ein problem mit mehreren variablen. normal muss ich doch die eine variable mit der anderen verknüpfen und das mit einem "&" oder?
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Also ich hab jetzt eine Prozedur erstellt aber sie funktioniert nicht. Es kommt immer ein Serverproblem also bei OpenNetworkConnection(Server$, 80). Der ganze Code sieht so aus:

Code: Alles auswählen

Procedure.s loadurl(Server$, ScriptPath$, PostData$)
If InitNetwork() = #True 
  ServerID = OpenNetworkConnection(Server$, 80)
  If ServerID = #True
    Request$ = "POST " + ScriptPath$ + " HTTP/1.1" + #CRLF$
    Request$ + "Host: " + Server$ + #CRLF$
    Request$ + #CRLF$
    Request$ + PostData$ + #CRLF$
   
    SendNetworkString(ServerID, Request$)
   
    Response$ = Space($FFF)
    ReceiveNetworkData(ServerID, @Response$, Len(Response$))
   
    CloseNetworkConnection(ServerID)
    
    pos1=FindString(Response$,"<body>",0)+6
    pos2=FindString(Response$,"</body>",pos1)
    Response$=Mid(Response$,pos1,pos2-pos1)
   
    ProcedureReturn Response$
  Else
    ProcedureReturn "Serverproblem"
  EndIf
Else
  ProcedureReturn "Netzwerkproblem"
EndIf
EndProcedure

Debug loadurl("zigapeda.zi.funpic.de","/md5.php","wort=hallo")
kluger Mann + kluge Frau = Romanze | dummer Mann + dumme Frau = Schwangerschaft
kluger Mann + dumme Frau = Affäre | dummer Mann + kluge Frau = Shopping <)
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

@zigapeda

Beitrag von jear »

Du fragst

Code: Alles auswählen

If ServerID = #True 
also müsste die ServerID gleich 1 sein, denn das ist der Inhalt der Konstanten #True.
Fage mal

Code: Alles auswählen

If ServerID
damit fragst Du ob die ServerID ungleich null ist und es klappt hervorragend!
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Antworten