Website in C Sharp einlesen
Brauche lediglich den angezeigten Text (unformatiert) und nicht den gesamten HTML Code
Ich will unter C#.Net (Entwicklungsumgebung Microsoft Visual Studio 2005) den Inhalt einer Website einlesen. Hierbei bin ich auf folgende Möglichkeit gestoßen:
Das Problem für mich ist allerdings, dass ich hier die gesamte Website als HTML Code erhalte. Ich benötige aber nur den tatsächlich angezeigten Text (ohne Formatierung) um Informationen von der Seite zu bekommen und beispielsweise nach Schlüsselwörtern suchen zu können.
Weiß jemand, wie das (möglichst einfach) geht?
Für die spätere Verarbeitung wären eventuell auch einzelne Links interessant. Eine Möglichkeit wäre natürlich, die gesamte Seite als HTML Code einzulesen und die betreffende Stelle einfach zu suchen; das ist allerdings eine unsaubere Lösung und kann zu Problemen führen, wenn die gesuchte Stelle öfters vorkommt. Gibt es auch hierfür eine bessere Lösung? Optimal wäre es, wenn Links auch ausgelesen werden, die restliche Formatierung, Header etc allerdings nicht.
Danke schon im Voraus für eure Hilfe.
Shadow377
Ich will unter C#.Net (Entwicklungsumgebung Microsoft Visual Studio 2005) den Inhalt einer Website einlesen. Hierbei bin ich auf folgende Möglichkeit gestoßen:
string htmlUri = "https://administrator.de";
WebRequest requestHtml = WebRequest.Create(htmlUri);
WebResponse responseHtml = requestHtml.GetResponse();
StreamReader r = new StreamReader(responseHtml.GetResponseStream());
string htmlContent = r.ReadToEnd();
r.Close();
Das Problem für mich ist allerdings, dass ich hier die gesamte Website als HTML Code erhalte. Ich benötige aber nur den tatsächlich angezeigten Text (ohne Formatierung) um Informationen von der Seite zu bekommen und beispielsweise nach Schlüsselwörtern suchen zu können.
Weiß jemand, wie das (möglichst einfach) geht?
Für die spätere Verarbeitung wären eventuell auch einzelne Links interessant. Eine Möglichkeit wäre natürlich, die gesamte Seite als HTML Code einzulesen und die betreffende Stelle einfach zu suchen; das ist allerdings eine unsaubere Lösung und kann zu Problemen führen, wenn die gesuchte Stelle öfters vorkommt. Gibt es auch hierfür eine bessere Lösung? Optimal wäre es, wenn Links auch ausgelesen werden, die restliche Formatierung, Header etc allerdings nicht.
Danke schon im Voraus für eure Hilfe.
Shadow377
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 98443
Url: https://administrator.de/contentid/98443
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
11 Kommentare
Neuester Kommentar
Würdest Du Dich auch nur annähernd mit HTML beschäftigt haben, würdest Du wissen, daß es nicht geht.
Bis zu einem gewissen Automatismus-Grad ja, aber danach für eigene Projekte und mit Deinem KnowHow:
NEIN
Oder frag' doch einfach mal bei Google nach, wie die das machen, dann wirst Du sehr schnell sehen, daß das mehrere Jahre braucht.
Lonesome Walker
der es haßt, wenn Leute sich nicht mit der Materie beschäftigen, aber einfach mal in ein Forum schneien, und glauben, KnowHow anzapfen zu können, um dann eine Software zu schreiben, mit der sie später ordentlich Kohle machen können, weil sie damit Kunden verarschen, die eh nix peilen...
Pfui deibel...
Bis zu einem gewissen Automatismus-Grad ja, aber danach für eigene Projekte und mit Deinem KnowHow:
NEIN
Oder frag' doch einfach mal bei Google nach, wie die das machen, dann wirst Du sehr schnell sehen, daß das mehrere Jahre braucht.
Lonesome Walker
der es haßt, wenn Leute sich nicht mit der Materie beschäftigen, aber einfach mal in ein Forum schneien, und glauben, KnowHow anzapfen zu können, um dann eine Software zu schreiben, mit der sie später ordentlich Kohle machen können, weil sie damit Kunden verarschen, die eh nix peilen...
Pfui deibel...
Mach mal locker Lonesome. Hier kommt niemand der einen Traktor hat und jetzt fragt, auf welchen Knopf er drücken muss um einen Porsche draus zu machen. Und wenn du dich mit HTML, XML und C# auskennen würdest wüsstest du, dass man dafür keine Jahre braucht.
Den HTML-Code kannst du, wenn er XHMTL-konform ist mit den C#-XML-Bibliotheken verarbeiten. Zu Body-Tag browsen und alles was dir an html-Elementen (img..) nicht passt ausfiltern. Oder gleich alle XML-Elemente selber ausfiltern und nur die inner-Text-Eigenschaft auswerten.
Ja, du hast recht, bis es zuverlässig läuft muss man etwas basteln, aber wenn du dafür Jahre brauchst...
Abgesehen davon gibt es schon seit vielen Jahren "Screenscraper" die genau für diese Aufgabe sind. Vielleicht findet sich eine C#-Version, die das gewünschte leistet.
Gruß
Filipp
Den HTML-Code kannst du, wenn er XHMTL-konform ist mit den C#-XML-Bibliotheken verarbeiten. Zu Body-Tag browsen und alles was dir an html-Elementen (img..) nicht passt ausfiltern. Oder gleich alle XML-Elemente selber ausfiltern und nur die inner-Text-Eigenschaft auswerten.
Ja, du hast recht, bis es zuverlässig läuft muss man etwas basteln, aber wenn du dafür Jahre brauchst...
Abgesehen davon gibt es schon seit vielen Jahren "Screenscraper" die genau für diese Aufgabe sind. Vielleicht findet sich eine C#-Version, die das gewünschte leistet.
Gruß
Filipp
Hallo Filipp,
glaub' mir, ich code nicht seit gestern, und im Bereich SEO hab ich auch a bisserl was zu sagen
Und wenn ich Dir sage, daß die aktuell auf dem Markt käuflich zu erwerbenden Produkte allesamt nix taugen, dann kannst Du davon ausgehen, daß ich so ziemlich alles davon schon mal getestet habe, und bisher aus irgendwelchen Gründen verworfen habe
Das Auslesen von Text ist sicherlich einfach, aber Zitat:
ja, da geht's dann schon los.
Was ist tatsächlich angezeigter Text?
Wer definiert das?
Ist auch die Navigation angezeigter Text?
Wie wird die Navigation definiert?
(manche machen ja Tabellen, andere so wie ich stehen auf CSS, und da merkst dann gar nix mehr...)
Das Thema HTML und Einlesen, an dem bastelt man, wenn man es gut und zuverlässig für seinen eigenen Zweck braucht, mindestens 6 Monate für ein rudimentäres Framework und die Regex, dann kommt die Performance-Optimierung, dauert auch nochma 6 Monate, und dann stellt man fest, daß dies oder jenes doch nicht so läuft, wie es laufen könnte, weil sich die Technik von HTML 4.01 nach XHTML 1.1 valid geändert hat, also Regex ergänzen, etc...
Du siehst, ich weiß, wovon ich schreibe.
Anyway, doch, für mich trifft der Vergleich mit Trecker und Porsche schon zu
Alex
glaub' mir, ich code nicht seit gestern, und im Bereich SEO hab ich auch a bisserl was zu sagen
Und wenn ich Dir sage, daß die aktuell auf dem Markt käuflich zu erwerbenden Produkte allesamt nix taugen, dann kannst Du davon ausgehen, daß ich so ziemlich alles davon schon mal getestet habe, und bisher aus irgendwelchen Gründen verworfen habe
Das Auslesen von Text ist sicherlich einfach, aber Zitat:
Ich benötige aber nur den tatsächlich angezeigten Text (ohne Formatierung)
um Informationen von der Seite zu bekommen
und beispielsweise nach Schlüsselwörtern suchen zu können
um Informationen von der Seite zu bekommen
und beispielsweise nach Schlüsselwörtern suchen zu können
ja, da geht's dann schon los.
Was ist tatsächlich angezeigter Text?
Wer definiert das?
Ist auch die Navigation angezeigter Text?
Wie wird die Navigation definiert?
(manche machen ja Tabellen, andere so wie ich stehen auf CSS, und da merkst dann gar nix mehr...)
Das Thema HTML und Einlesen, an dem bastelt man, wenn man es gut und zuverlässig für seinen eigenen Zweck braucht, mindestens 6 Monate für ein rudimentäres Framework und die Regex, dann kommt die Performance-Optimierung, dauert auch nochma 6 Monate, und dann stellt man fest, daß dies oder jenes doch nicht so läuft, wie es laufen könnte, weil sich die Technik von HTML 4.01 nach XHTML 1.1 valid geändert hat, also Regex ergänzen, etc...
Du siehst, ich weiß, wovon ich schreibe.
Anyway, doch, für mich trifft der Vergleich mit Trecker und Porsche schon zu
Alex
In diesem Falle läßt sich das mittels Regex wunderbar lösen, denn irgendein Kennzeichen muß auf der Homepage ja sein, damit man weiß, welche Versionsnummer es ist.
Andererseits gebe ich Dir zu bedenken, daß es bei gewissen Softwarehäusern auch eine Logfile-Analyse gibt, die Dein Vorhaben sehr schnell sinnlos macht.
Besser wäre es doch einfach, einen Newsletter zu abonnieren, oder mit dem Hersteller direkt in Kontakt zu treten, oder?
Lonesome Walker
Andererseits gebe ich Dir zu bedenken, daß es bei gewissen Softwarehäusern auch eine Logfile-Analyse gibt, die Dein Vorhaben sehr schnell sinnlos macht.
Besser wäre es doch einfach, einen Newsletter zu abonnieren, oder mit dem Hersteller direkt in Kontakt zu treten, oder?
Lonesome Walker
Zitat von @Shadow377:
Newsletter wären eine Möglichkeit, allerdings kann man die
nicht so gut/leicht auswerten. Weiters soll das Programm auch auf
mehreren Rechnern funktionieren, und dort überall die Newsletter
zu abonnieren wäre mühsam.
Newsletter wären eine Möglichkeit, allerdings kann man die
nicht so gut/leicht auswerten. Weiters soll das Programm auch auf
mehreren Rechnern funktionieren, und dort überall die Newsletter
zu abonnieren wäre mühsam.
Wow, das steht aber in Konflikt mit:
Ich will für mich selbst (also privat und nicht kommerziell!)
einen kleinen und einfachen Paketmanager für Windows XP schreiben,
der überprüft, ob die installierten Programme noch in der aktuellsten Version vorliegen.
einen kleinen und einfachen Paketmanager für Windows XP schreiben,
der überprüft, ob die installierten Programme noch in der aktuellsten Version vorliegen.
Vielleicht doch KnowHow abgrabschen...?
Lonesome Walker
Ich hab mir ja lange überlegt, ob ich nochwas dazu schreiben sollte...
Wie wär's, wenn Du ein Netzwerk-Share anlegst, und dahin alles runterlädst?
Nicht umsonst hat ja auch MS den WSUS erfunden...
Alles weitere zeugt von Unwissen ( ... oder doch Lüge? )
Lonesome Walker
Wie wär's, wenn Du ein Netzwerk-Share anlegst, und dahin alles runterlädst?
Nicht umsonst hat ja auch MS den WSUS erfunden...
Alles weitere zeugt von Unwissen ( ... oder doch Lüge? )
Lonesome Walker
Hallo,
in der letzten oder vorletzten c't war eine Vorstellung verschiedener (kostenloser) Programme zur Versionsüberwachung. Wenn es dir um den Effekt und nicht um die Umsetzung geht würde ich dir auf jeden Fall eines dieser Programme empfehlen. Da ist wird dann nicht nur ermittelt, welche Version die aktuelle ist, sondern vor allem auch, welche aktuell installiert ist. Und das bis hin zu Security-Patches.
Wenn man das von Hand macht wird es immer halb-manuell bleiben. Alleine schon das Einpflegen der Hersteller-Website-URLs. Und dann werden die manchmal einfach geändert... Und bei jeder Softwareinstallation muss man da wieder was von Hand erledigen.
Gruß
Filipp
in der letzten oder vorletzten c't war eine Vorstellung verschiedener (kostenloser) Programme zur Versionsüberwachung. Wenn es dir um den Effekt und nicht um die Umsetzung geht würde ich dir auf jeden Fall eines dieser Programme empfehlen. Da ist wird dann nicht nur ermittelt, welche Version die aktuelle ist, sondern vor allem auch, welche aktuell installiert ist. Und das bis hin zu Security-Patches.
Wenn man das von Hand macht wird es immer halb-manuell bleiben. Alleine schon das Einpflegen der Hersteller-Website-URLs. Und dann werden die manchmal einfach geändert... Und bei jeder Softwareinstallation muss man da wieder was von Hand erledigen.
Gruß
Filipp