Text von eine Website kopieren?
Übersicht

CO2ehemals "SirMO"Betreff: Text von eine Website kopieren? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich möchte gerne einen Text von einer Internet-Seite kopieren um ihn dann in einem Windows-Fenster anzeigen zu lassen. Dabei soll wirklich nur der Menschen-lesbare Teil (ohne die html-tags, etc.) kopiert werden. Außerdem sollen noch befehle wie <b></b>, <u></u> oder <i></i> erkannt und ausgeführt werden... Wie geht das? (Sorry, hatte bisher noch nicht soviel mit "online-zeug" in blitzmax zu tun und weiß daher auch nicht wonach ich suchen sollte ![]() |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du must Dir 'nur' einen eigenen Renderer für HTML schreiben, so geht das.
Lange Variante der Antwort: Liess die Seite ein, filtere sämtliche Tags und interpretiere sie nach ihrer Bedeutung. Im Endeffekt erstellst Du also einen Parser. Dir sollte bewusst sein dass dies eine sehr komplexe Aufgabe ist. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Längere Variante der Antwort:
Ich würde es wie folgt machen. Du kannst die Schritte 1-3 aber auch mit BRL.httpstream überspringen: 1. Netzwerkvebindung herstellen. Die Dokumentation zu CreateTCPSocket & CO ist ausreichend. Bei BNetEx entsprechend TTcpStream. 2. HTTP-Header senden. Der folgende Text sollte reichen, um die Website http://host/path aufzurufen Code: [AUSKLAPPEN] GET /path HTTP/1.0
(mit Leerzeile am Ende).
Host: host Connection: Close 3. Auslesen. Wenn es keine Weiterleitung o.ä. gibt, dann kannst du den HTTP-Header (Text bis zur ersten Leerzeile) überspringen. 4. HTML verarbeiten. Das ist wohl der schwierigste Teil. Je nach Anspruch kann der Aufwand hierbei ausarten. Da ich nicht denke, dass du vorhast, einen Browser zu schreiben, kannst du z.B. den ganzen HTML-Header weglassen. Außerdem kannst du alles, was zwischen <!-- und --> steht, entfernen (am besten über String.Find und danach über Slices die Teile aneinanderfügen, die nicht dazugehören). Du suchst dann das Dokument nach "<body" ab und beginnst von hier an, abwechselnd nach "<" und ">" zu suchen und so Tags und Inhalte rauszufiltern. Was zwischen den Tags <script> und </script> bzw. <style> und </style> steht, solltest du auch überspringen. Das Herausfiltern der von dir dargestellten Tags geht dann relativ einfach. Die Anzeige läuft dann einfach über DrawText, ggf. nach dem Setzen eines anderen ImageFonts. Schwächen dieses Modells: - Es kann kein CSS. Hierdurch werden die Formatierungen nur durch die entsprechenden HTML-Tags erkannt, was bei manchen Websites fehlschlagen könnte. - Das Layout wurde vernachlässigt. Man sollte nach Block-Elementen einen Zeilenumbruch einfügen, manuelle Zeilenumbrüche sollten auch erkannt werden, aber leider basieren viele Layouts auch auf Tabellen und CSS. Soviel zum Thema "ausarten" - Manche Websites haben es nicht so mit accessability. Das heißt, vieles wird z.B. nach JavaScript ausgelagert, wo es wenig verloren hat. Du musst daher im konkreten Fall schauen, welche Schwächen des Modells ungeeignet sind. ZEVS |
||
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
MaxGUI bietet ein HTMLView Gadget an, welches, wahrscheinlich durch irgend ein IE-Dingsbums, oder sonstwas, HTML ganz easy darstellen kann, und scheinbar auch plattformunabhängig (Also verwendet es eventuell eine andere Methode auf anderen Plattformen). Siehe dazu CreateHTMLView(). | ||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, habe nun das HTML-View-Gadget ausprobiert, und das ist genau das, was ich haben wollte ![]() |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
Propellator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest als quick'n'dirty Lösung die Website erst in einen String downloaden, dann nach allen Angaben von href innerhalb des a-tags suchen und den Wert dieser Eigenschaft auf "#" setzen.
HTMLVIEW_NONAVIGATE dient eher dazu, dass der Benutzer keine Vorwärts/Zurück Buttons hat. |
||
Propellator - Alles andere ist irrelephant.
Elefanten sind die Könige der Antarktis. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group