PDA

Vollständige Version anzeigen : Inhalt einer Webseite in VB laden


sarlt
30.05.2001, 02:08
Hallo *,

Ich benutze die Internet Controls um auf VB im Internet zu surfen. Er surft auch prima zu den angegebenen URLS, sendet Daten usw.

Leider weiß ich nur leider nicht wie ich die Daten einer Webseite (HTML) auslesen kann.
*schäm*

Besten Dank im voraus.

Sascha

Stefan Kulpa
30.05.2001, 07:30
Hallo,

was möchtest Du denn auslesen? Es ist nicht ganz einfach, HTML-Seiten "auszulesen", ohne sich durch die ganzen HTML-Tags etc. zu "parsen".
Ggf. könnte man versuchen, die Seite als "reinen" Text zu speichern - aber dann hat man immer noch recht unstrukturierte Daten.

Gruß

sarlt
30.05.2001, 22:58
Ich möchte wirklich den reinen HTML Code. In diesem suche ich mir dann die Strings, die ich brauche.

Warum ist das nur so schwer?
Kann denn nicht mal was einfach sein?

Stefan Kulpa
31.05.2001, 05:46
<font face="Verdana" size="2">Hallo,

das funktioniert mithilfe des APIs - dadurch wird eine Interaktion mit dem Benutzer beim Speichern vermieden. Und das ist auch die Lösung: die aktuelle Seite muss als Datei gespeichert und kann als Textdatei ausgelesen werden. Hier ein Beispiel:</font>

<PRE><FONT SIZE=1 FACE=Courier New><FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Declare</FONT> <FONT COLOR=#000080>Function</FONT> URLDownloadToFile <FONT COLOR=#000080>Lib</FONT> "urlmon" <FONT COLOR=#000080>Alias</FONT> _
"URLDownloadToFileA" _
(<FONT COLOR=#000080>ByVal</FONT> pCaller <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>, _
<FONT COLOR=#000080>ByVal</FONT> szURL <FONT COLOR=#000080>As String</FONT>, _
<FONT COLOR=#000080>ByVal</FONT> szFileName <FONT COLOR=#000080>As String</FONT>, _
<FONT COLOR=#000080>ByVal</FONT> dwReserved <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>, _
<FONT COLOR=#000080>ByVal</FONT> lpfnCB <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>) <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#808080><HR></FONT>

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Sub</FONT> Command1_Click()

<FONT COLOR=#000080>Dim</FONT> sFilename <FONT COLOR=#000080>As String</FONT>
<FONT COLOR=#000080>Dim</FONT> sRecord <FONT COLOR=#000080>As String</FONT>
<FONT COLOR=#000080>Dim</FONT> iFile <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Integer</FONT>

sFilename = "I:\WINNT\Temp\MyFile.htm"

<FONT COLOR=#000080>If</FONT> URLDownloadToFile(0, _
brwWebBrowser.LocationURL, _
sFilename, _
0, _
0) = 0 <FONT COLOR=#000080>Then</FONT>
<FONT COLOR=#000080>If</FONT> FileLen(sFilename) > 0 <FONT COLOR=#000080>Then</FONT>
iFile = FreeFile
<FONT COLOR=#000080>Open</FONT> sFilename <FONT COLOR=#000080>For</FONT> <FONT COLOR=#000080>Input</FONT> <FONT COLOR=#000080>As</FONT> #iFile
<FONT COLOR=#000080>Do</FONT> <FONT COLOR=#000080>While</FONT> <FONT COLOR=#000080>Not</FONT> EOF(iFile)
<FONT COLOR=#000080>Line Input</FONT> #iFile, sRecord
<FONT COLOR=#000080>Debug.Print</FONT> sRecord
<FONT COLOR=#000080>Loop</FONT>
<FONT COLOR=#000080>Close</FONT> #iFile
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>If</FONT>

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Sub</FONT>
<FONT COLOR=#808080></FONT>

</FONT></PRE>

<font face="Verdana" size="2">Hier musst Du noch Anpassungen durchführen:</font>

<font face="Courier New" size="2">sFilename = "I:\WINNT\Temp\MyFile.htm"</font> <font face="Verdana" size="2"><- einen gültigen Pfad eintragen</font>
<font face="Courier New" size="2">brwWebBrowser.</font> <font face="Verdana" size="2"><- den gültigen Namen des Control eintragen

HTH</font>

sarlt
06.06.2001, 01:06
Danke Stefan,

wie immer alles bestens. Dein Tip hat super geholfen.

Ich würde jedoch gern keine Datei erstellen (persönliche Vorliebe, u.a. wegen Berechtigungen).

Ich habe aus einem Buch ein Beispiel für einen eigenen Webbrowser gefunden. Das bekomme ich aber irgendwie überhaupt nicht zum laufen. Habe mir erlaubt, Dir dieses via Mail zu schicken.

Würde mich sehr über Deinen Kommentar freuen.

Mfg

Sascha

Stefan Kulpa
06.06.2001, 07:03
<font face="Verdana" size="2">Hallo Sascha,

ich habe Dir das Projekt etwas modifiziert zurückgesendet.
Für alle interessierten Leser:

Der Zugriff auf die Inhalte einer HTML-Datei erfolgt über das Internet Explorer Document Object Model,
ein entspechendes Beispiel findet man in der MSDN unter folgendem Artikel:

ID: Q238313:PRB: Accessing the Internet Explorer Document Object Model From Visual Basic

Gruß</font>

sarlt
06.06.2001, 18:42
Ich versteh das nicht :-)

Bei mir geht es leider immer noch nicht.
Er meldet:

1. Beim aufrufen des Projektes=Zeile 45: Klasse MSComctlLib.TreeView des Steuerelements tvTreeView war keine geladene Steuerelementklasse. (steht in der LOG Datei)

2. Fehler beim Compilieren:
Benutzerdefinierter Typ nicht definiert.
und markiert dann die Zeile:
Public Sub RecurseFrames(ByVal iDoc As HTMLDocument, ByVal iNode As Node)

Ich verstehe die Welt nicht mehr. Bin ich so unfähig oder ...???

Stefan Kulpa
06.06.2001, 19:22
<font face="Verdana" size="2">Hallo,

in Deinem Projekt war eigentlich schon das MSCOMCTL.OCX eingebunden.
Allerdings ist bei mir VB-SP5 bzw. SP4 des Controls installiert.

Ich kann mir höchstens vorstellen, dass Du dieses ServicePack noch nicht
installiert hast und mein VB den Verweis aktualisiert hat.

Wenn dem so ist, kannst du entweder das ServicePack nachinstallieren, oder
einfach das Treeview entfernen, den Verweis neu setzen und dann das
Treeview wieder einsetzen - das müsste helfen.

Gruß</font>

sarlt
05.07.2001, 02:24
Kommt zwar etwas spät. Hat aber auch gedauert. Habe die gesamte Kiste neu installiert. Läuft jetzt. DANKE STEFAN.