An den HTML-Code einer Webseite kommen

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Megamag

Betreff: An den HTML-Code einer Webseite kommen

BeitragFr, Feb 11, 2011 16:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Forum!
Ich Mühe mich gerade damit ab, irgendwie an den HTML Code einer Seite zu kommen (so wie man es mit jedem Browser tun kann - nur mit BB). Ich habe hier ein paar Ansätze gesehen, die haben allerdings nur ein bisschen bzw. gar nicht funktioniert. Ich hoffe, ihr könnt mir da vielleicht weiterhelfen. Ich brauche nur den HTML-Code, ich will den nicht anzeigen oder einen Browser programmieren o.Ä., sondern ich möchte nur den Code runterladen und evt. in eine Text-Datei schreiben. Vielen Dank für eure Mühe! Very Happy

,-Megamag
Mein DeviantArt Profil
Gewinner des BAC #136

TimBo

BeitragFr, Feb 11, 2011 16:41
Antworten mit Zitat
Benutzer-Profile anzeigen
OpenTCPStream
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

Hakkai

BeitragFr, Feb 11, 2011 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte mal das Bedürfnis gehabt meine IP in eine Variable zu laden

Code: [AUSKLAPPEN]
Function network_Igetip() ; lese wieistmeineip.de in myip ein

Local webserver$ = "www.meineipadresse.de"
Local webpath$ = "meine_ip.php"
Local tmp_msg$
Local tcp

;Verbinde zur Webseite

   tcp = OpenTCPStream( webserver$, 80 )
   
   If Not tcp
      Return 1 ;-> connection fehlgeschlagen
   EndIf
            
   ;Lese Meine Internet IP
   WriteLine tcp, "GET http://" + webserver$ + "/" + webpath$ + " HTTP/1.0"
   WriteLine tcp, ""

   If Eof( tcp )
      Return 1 ;-> connection fehlgeschlagen
   Else
                           
      While Not Eof(tcp) ;lese nun das Vz aus

         tmp_msg$ = ReadLine$(tcp)
         ;DebugLog(tmp_msg$)
         
         t = Instr(tmp_msg$, "<B>", 1)
         If t > 0
            s = Instr(tmp_msg$, ";", t)
            e = Instr(tmp_msg$, "<", s)
            tmp_ip_dot$=Mid( tmp_msg$, s + 1, e - s -1 )
            
            Exit         
         EndIf

      Wend
                        
   EndIf

   CloseTCPStream tcp

   Return network_intip(tmp_ip_dot$)
   
End Function


Diese Funktion, welche nicht von mir ist und hier im Forum herumwandert, wurde allerdings auch noch gebraucht:

Code: [AUSKLAPPEN]
Function network_intip(IP$)
   
   Local c, s, e

   While s < StringWidth(IP$) / fontw
      s = e
      If Instr(IP$,".",s+1) > 0 Then e = Instr(IP$,".",s+1)
      If s >= e Then Exit
      c = c + 1
   Wend

   If Not c = 3 Then Return -1

     a1=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
     a2=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
     a3=Int(Left(IP$,Instr(IP$,".")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,"."))
     a4=Int(IP$)
     Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) +a4
End Function
 

Toasty

BeitragFr, Feb 11, 2011 18:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich würde das so machen:

Code: [AUSKLAPPEN]
Dim HTML_Line$( 1024 ) ;Array für HTML Lines einrichten... 1025 Felder müssten reichen?

Website$ = "www.google.de"
Port = 80
;Verbinden
Stream = OpenTCPStream( Website$, Port )
If Stream = 0 Then RuntimeError"Konnte nicht zur Website verbinden!"

;Anfrage senden
WriteLine Stream, "GET "+ RequestedFile$ +" HTML/1.0"
WriteLine Stream, "Host: "+ Website$
WriteLine Stream, ""

;Auf Antwort warten
Repeat
Until ReadLine( Stream ) <> ""

;Bis zur Leer-Zeile auslesen (alles andere sind nur Browser Informationen, also gehört nur indirekt zum HTML Code)
Repeat
Until ReadLine( Stream ) = ""

Repeat
   i = i + 1
   CurrentLine$ = ReadLine( Stream )
   
   If i > 4
      If HTML_Line$( i - 1 ) = "" And HTML_Line$( i - 2 ) = "" And HTML_Line$( i - 3 ) = "" And HTML_Line$( i - 4 ) = ""
         Exit
      End If
   End If
   
   HTML_Line$( i ) = CurrentLine$( Stream )
Forever

CloseTCPStream( Stream )

;Restlicher Code...


Ich bin mir sicher mit dem If HTML_Line$ hab ich das unübersichtlich gemacht, aber was anderes fällt mir dazu nicht ein.

Funktioniert auf jeden fall bei mir.

Gruß, Toasty
@AMD Phenom BE X4 2,5Ghz(Overclocked 2,61Ghz); 4GB DDR2; 512MB nVidia GeForce 8400gs; Win7 Home Premium 64bit
Lua for President!
 

RoLo

BeitragMi, Sep 21, 2011 12:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich probiere es einfach und es funktioniert nich Sad

Was kann ich machen?

Hat jemand ein Bsp. Code für mich? (Ich will einfach den Inhalt einer Textdatei (licht.txt) auslesen.)
(Inhalt der Datei ist entweder "0" oder "1")

RoLo

Xeres

Moderator

BeitragMi, Sep 21, 2011 12:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Frage ist: Wie sieht dein derzeitiger Code aus? Wo liegt die Datei?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

RoLo

BeitragMi, Sep 21, 2011 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe noch keinen wirklichen Code.

Und die datei liegt auf http://meine.seite.com/licht.txt

Eingeproggt

BeitragMi, Sep 21, 2011 13:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du keinen Code hast dann kann auch schwer was funktionieren...
Xeres meint den Programmcode mit dem du versuchst die Datei herunter zu laden / auszulesen? Den bräuchten wir um dir zu sagen was mögliche Fehlerquellen sind.

Und weshalb ich eigentlich schreiben wollte:
Der Code von Toasty ist ziemlicher Pfusch... die letzte Repeat-Forever Schleife würde ich mit Eof beenden anstatt auf 4 leere Zeilen hintereinander zu warten. Aber mir is bewußt dass das Ursprungsthema eh schon alt is und mein Beitrag mehr oder weniger überflüssig... Denke nur dass man das dazu sagen sollte bevors jemand nachmacht...

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Midimaster

BeitragMi, Sep 21, 2011 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
unter der Adresse...

http://meine.seite.com/licht.txt

...befindet sich rein gar nichts! Vielleicht ist das das Problem?

Tipp:
Die Text-Datei dort sollte einigen Minimumansprüchen genügen. So würde ich eher ein Zeichen "0" oder "1" in die Text-Datei reinschreiben (also ASCII 49 bzw. 50 ) statt wirklich nur ein Byte mit Wert 0



So funktioniert es z.b. mit einer txt-Datei auf meiner Homepage:

BlitzBasic: [AUSKLAPPEN]
Graphics 1000,600

; OpenTCPStream/CloseTCPStream Example

Print "Connecting..."
tcp=OpenTCPStream( "www.midimaster.de",80 )

If Not tcp Print "Failed.":WaitKey:End

Print "Connected! Sending request..."

WriteLine tcp,"GET http://www.midimaster.de/xyz.txt HTTP/1.0"
WriteLine tcp,Chr$(10)

If Eof(tcp) Print "Failed.":WaitKey:End

Print "Request sent! Waiting for reply..."

While Not Eof(tcp)
Print ReadLine$( tcp )
Wend

If Eof(tcp)=1 Then Print "Success!" Else Print "Error!"

CloseTCPStream tcp

WaitKey
End


Wichtig dabei : Groß und Kleinschreibung beachten!!!

so funktioniert es:
BlitzBasic: [AUSKLAPPEN]
WriteLine tcp,"GET http://www.midimaster.de/xyz.txt HTTP/1.0"

und so z.b. nicht:
BlitzBasic: [AUSKLAPPEN]
WriteLine tcp,"GET http://www.midimaster.de/xyz.txt HTTP/1.0"
  • Zuletzt bearbeitet von Midimaster am Mi, Sep 21, 2011 21:44, insgesamt 4-mal bearbeitet

Jamagin

BeitragMi, Sep 21, 2011 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Man öffne den IE und dann eine Seite, drückt die rechte Maustaste und dann auf Quelltext anzeigen, danach drückt man STRG+A und STRG+C und öffnet sein Notepad und drückt STRG+V!

Trotzdem versteh ich den Sinn der Frage nicht! Sorry

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Holzchopf

Meisterpacker

BeitragMi, Sep 21, 2011 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
/me haut Jamagin eins über die Rübe

Hör sofort auf, Fragen mit solchen "Antworten" zu beantworten Mad

Wir sind hier: Übersicht Arrow BlitzBasic Arrow Allgemein, folglich geht es darum, wie man in BlitzBasic höchstpersönlich an den Quelltext kommt. BlitzBasic kann nicht "IE öffnen", dann die "rechte Maustaste drücken" usw. Confused Es geht hier um ein programmiertechnisches Problem Wink

mfG
Holzchopf
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm
 

RoLo

BeitragMi, Sep 21, 2011 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@Jamagin FAIL
@Holzchopf Danke für deinen klaren Worte Smile

@Midimaster Danke für die Antwort
aber:

Ich weiss nicht ob die Seite http://meine.seite.com/licht.txt existiert (ich will hier einfach nicht den orginal link posten)

Ich habe mal deinen Code ausprobiert...
Und es geht irgendwie nicht.

@Für alle die die Frage nicht verstanden haben:
Ich will einfach ein Programm programmieren wo mir das zurückliefert, was in der Datei "licht.txt" liegt.(Diese Datei liegt auf einem Server.)


Und wenn das funktioniert will ich mithilfe von dieser Datei den Ablauf des Programms beeinflussen.
(Aber dass weiss ich dann, wie ich es mache.)
In der Datei wird immer nur ein Zeichen stehen. Entweder "0" oder "1". Das Programm soll bei "0" etwas anderes machen als bei "1".(Wie gesagt ich will nur wissen, wie man die Datei liest. Ich schaffe es einfach nicht.)


EDIT:
Ich will gar nicht den Quelltext!!!


Danke
RoLo

Jamagin

BeitragMi, Sep 21, 2011 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Aso! Na dann entschuldige ich mich für mein Fehlverhalten! Es war nicht böse gemeint!

lg. Jamagin
Bevor du etwas neues beginnst, erledige das alte

Midimaster

BeitragMi, Sep 21, 2011 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
@Rolo
wie, der code funktioniert bei dir nicht? auch nicht, wenn du ihn auf meine homepage zeigen lässt?

zu...
Zitat:
...ich will hier einfach nicht den orginal link posten...

ist schon ein bißchen albern, oder? Hast Du Angst, dass wir Dir die Datei wegessen, oder was? nimm doch irgend einen anderen Namen, oder einen anderen Server, aber stell mal diese LICHT.TXT zur Verfügung!

zu...
Zitat:
... die die Frage nicht verstanden haben...

Ich habe die Frage ganz genau so verstanden. Auch bei mir handelt es sich bei der xyz.txt um eine Steuerdatei, die von außen von meinen an Usern verkauften Exemplaren abgefragt wird.

Ob da nun ein Zeichen oder ein paar Zeilen drinnstehen...bleibt sich das gleiche!!! Es wird übrigens immer "Quelltext" zurückkommen. Ich weiß gar nicht was Du damit meinst??? Ohne einen Browser wird der Inhalt der Datei 1:1 Zeichen für Zeichen so aussehen, wie sie dort auf dem Server ist.

Deshalb bekommst Du bei direktem Ansurfen einer Adresse wie www.midimaster.de normalerweise die index.htm mit allen ihren tags und steuerzeichen zu sehen. Und bei einer TXT-Datei einfach alle Zeichen, die Du dort mit einem Texteditor eingegeben hattest.

Und da glaube ich liegt auch schon dein Problem. Du solltest diese "0" wirklich mal mit einem Texteditor in die LICHT.TXT schreiben und dann sehen, was passiert...

Angenommen (nur mal angenommen) du hättest diese LICHT.TXT dadurch erzeugt, dass du von BB aus eine Byte mit dem Wert 0 reingeschrieben hast...
BlitzBasic: [AUSKLAPPEN]
WriteByte Stream,0

... dann wird da nie was zurückkommen, denn diese 0 repräsentiert kein "Zeichen". Wie hast Du denn die LICHT.TXT erzeugt?
  • Zuletzt bearbeitet von Midimaster am Mi, Sep 21, 2011 21:45, insgesamt einmal bearbeitet
 

RoLo

BeitragMi, Sep 21, 2011 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
@midimaster
Danke für deine ausführlichen antworten Smile

also

hier liegt die datei: http://XYZ.net/light.txt

Die Datei habe ich nicht erzeugt, sondern liegt schon immer dort Wink

Wenn ich deinen Code auf meine Seite änder dann gibt es eben nur einen Quelltext -> und ich schaffe es nicht den eingendlichen Inhalt herauszulesen...

RoLo
  • Zuletzt bearbeitet von RoLo am Do, Sep 22, 2011 9:47, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragMi, Sep 21, 2011 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du mal irgendwann deinen aktuellen Code postest, kann man außer herum raten auch vielleicht das Problem lösen... zu "es geht irgendwie nicht" fällt mir nämlich nur "schade aber auch" ein.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

RoLo

BeitragMi, Sep 21, 2011 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 1000,600

; OpenTCPStream/CloseTCPStream Example

Print "Connecting..."
tcp=OpenTCPStream( "XYZ.net",80 )

If Not tcp Print "Failed.":WaitKey:End

Print "Connected! Sending request..."

WriteLine tcp,"GET http://XYZ.net/light.txt HTTP/1.0"
WriteLine tcp,Chr$(10)

If Eof(tcp) Print "Failed.":WaitKey:End

Print "Request sent! Waiting for reply..."

While Not Eof(tcp)
filedata$=ReadLine$( tcp )
Wend

If Eof(tcp)=1 Then Print "Success!" Else Print "Error!"

CloseTCPStream tcp

print filedata$
WaitKey
End
  • Zuletzt bearbeitet von RoLo am Do, Sep 22, 2011 9:47, insgesamt einmal bearbeitet

Midimaster

BeitragMi, Sep 21, 2011 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
aber mit meiner xyz.txt klappt es? Die sollte, wenn es funktioniert hat so eine Liste von Dateinnamen mit der jeweiligen versionsnummer dahinter auflisten...
so etwa:
Zitat:
HTTP/1.1 200 OK
Date: Wed, 21 Sep 2011 19:20:10 GMT
Server: Apache
Last-Modified: Tue, 15 Jun 2010 16:23:57 GMT
ETag: "50538c7c-17e-4c17a91d"
Accept-Ranges: bytes
Content-Length: 382
Connection: close
Content-Type: text/plain

Setup_Score_INT.exe = 8.0.8
.....
End = Error


...wobei der eigentliche Inhalt der Datei erst nach der Zeile "Content-Type: text/plain" beginnt. Alles vorher ist Kommunikation des Servers. Das musst du bei deiner Datei bedenken! Leider schreibst du immer nur "geht nicht" und wir können nur raten, ob überhaupt gar nix gesendet wurde, oder wenigstens irgendwelcher Müll ankam....

***EDIT***

also bei mir klappt es auch auf deiner Homepage, es kommt folgende Nachricht:
Zitat:
!HTTP/1.1 200 OK!
!Date: Wed, 21 Sep 2011 19:29:36 GMT!
!Server: Apache/2.2!
!Last-Modified: Wed, 21 Sep 2011 19:27:48 GMT!
!ETag: "292800d-1-4ad78923d1500"!
!Accept-Ranges: bytes!
!Content-Length: 1!
!Vary: Accept-Encoding!
!Connection: close!
!Content-Type: text/plain!
!!
!1!

Die Ausrufezeichen muss Du dir mal wegdenken. Das sieht so aus, als ob erst eine Leerzeile kommt und dann eine Zeile mit einer 1

Das ist es doch, oder?
  • Zuletzt bearbeitet von Midimaster am Mi, Sep 21, 2011 21:45, insgesamt einmal bearbeitet
 

RoLo

BeitragMi, Sep 21, 2011 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Jetzt habe ich festgestellt, dass es mit dem oben genannten Link funktioniert.

Aber mit http://XYZ.com/light.txt funktioniert es nicht. Es gibt immer 0 zurück.

Zitat:
Connecting...
Connected! Sending request...
Request sent! Waiting for reply...
Success!
0


und dass bei dem code:
Code: [AUSKLAPPEN]
Graphics 1000,600

; OpenTCPStream/CloseTCPStream Example

Print "Connecting..."
tcp=OpenTCPStream( "XYZ.com",80 )

If Not tcp Print "Failed.":WaitKey:End

Print "Connected! Sending request..."

WriteLine tcp,"GET http://XYZ.com/light.txt HTTP/1.0"
WriteLine tcp,Chr$(10)

If Eof(tcp) Print "Failed.":WaitKey:End

Print "Request sent! Waiting for reply..."

While Not Eof(tcp)
filedata$=ReadLine$( tcp )
Wend

If Eof(tcp)=1 Then Print "Success!" Else Print "Error!"

CloseTCPStream tcp

Print filedata$
WaitKey
End


aber wenn ich die datei über den browser öffne geht es: http://XYZ.com/light.txt

RoLo
  • Zuletzt bearbeitet von RoLo am Do, Sep 22, 2011 9:46, insgesamt einmal bearbeitet

Midimaster

BeitragMi, Sep 21, 2011 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich krieg hiermit eine "1":

BlitzBasic: [AUSKLAPPEN]
Graphics 1000,600

; OpenTCPStream/CloseTCPStream Example

Print "Connecting..."
tcp=OpenTCPStream( "xyz.com",80 )

If Not tcp Print "Failed.":WaitKey:End

Print "Connected! Sending request..."

WriteLine tcp,"GET http://xyz.com/light.txt"
WriteLine tcp,Chr$(10)

If Eof(tcp) Print "Failed.":WaitKey:End

Print "Request sent! Waiting for reply..."

While Not Eof(tcp)
Print "!"+ ReadLine$( tcp )+"!"
Wend

If Eof(tcp)=1 Then Print "Success!" Else Print "Error!"

CloseTCPStream tcp

WaitKey
End
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
  • Zuletzt bearbeitet von Midimaster am Do, Sep 22, 2011 13:31, insgesamt einmal bearbeitet

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group