Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Webpage-Grabbing mit dem XML Parser

Geschrieben von: Christoph Wille
Kategorie: ASP Tricks

Das Grabben von Webinhalten von fremden Servern wird immer mehr zum Standardfeature einer Website - sei es um Wetterdaten einzubinden, Kreditkartendaten zu verifizieren, oder auch nur zur Überwachung des eigenen Servers. Heute zeige ich eine Möglichkeit, wie man das Grabbing gratis durchführen kann - mit dem Microsoft XML Parser.

Auf den ersten Blick hört es sich komisch an, daß der XML Parser mit einem Tool ausgeliefert wird, das Webseiten grabben kann. Wenn man die Entstehungsgeschichte weiß, dann schon weniger: damit sollte es XML Programmierern ermöglicht werden, XML Dokument nicht nur von der lokalen Platte zu laden, sondern auch vom Webserver aus. Und da sowohl HTML Dokumente als auch XML über das gleiche Protokoll geholt werden können, wurde dann das für XML gedachte Feature nach und nach für HTML Grabbing eingesetzt.

Irgendwann hat sich diese Methode weit herumgesprochen, und mehr und mehr Leute haben begonnen, die Klasse (Objekt) XMLHTTP zu verwenden. Wie bei der VBScript Dictionary Komponente allerdings haben die Programmierer bei Microsoft vorerst nur an ihre Verwendung am Client gedacht, nicht am Server (wo sie die ASP Programmierer dann hauptsächlich eingesetzt haben).

Die Implementierung von XMLHTTP ist für Webserver nicht "zuträglich", daher wurde in der Version 3.0 des XML Parsers die ServerXMLHTTP Komponente miteingebaut, die mit der Skalierbarkeit eines Webserver im Gedanken entworfen wurde. Allerdings findet man den MSXML 3.0 auf keinem Windows 2000 Server standardmäßig installiert - er muß separat downgeloadet werden (siehe Links am Ende des Artikels). Die gewonnene Performance wiegt die notwendige Installation aber locker wieder auf.

Wie verwendet man nun das ServerXMLHTTP Objekt? Daß das nicht schwierig ist, zeigt der folgende Sourcecode (ParserGrab.asp):

<%
Set objXmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXmlHttp.open "GET", "http://aspheute/", False
objXmlHttp.send

strHTML = objXmlHttp.responseText
Set objXmlHttp = Nothing

Response.Write strHTML
%>

Das Objekt wird instanziert, die Verbindung zum Server geöffnet, dann der Request geschickt. Die Abarbeitung erfolgt synchron, und die vom Server zurückgelieferten Informationen können via responseText abgeholt werden. Besprechen wir nun die verwendeten Methoden des Objekts genauer durch.

Die open Methode wird wie folgt verwendet:

objXmlHttp.open(strMethod, strUrl, bAsync, strUser,strPassword)

Ich habe nur die Methode, den URL und das Flag für asynchrones Grabben verwendet - Benutzername und Passwort kommen dann ins Spiel, wenn man gesicherte Dateien grabben möchte. Als Methoden kommen GET, POST oder auch HEAD in Frage - und letztere könnte man dann so einsetzen:

Set objXmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXmlHttp.open "HEAD", "http://aspheute/", False
objXmlHttp.send
Response.Write objXmlHttp.getResponseHeader("Content-Length")

Damit kann man herausfinden, wie groß eine Datei ist - ohne sie vom entfernten Webserver erst zu holen. Es werden nur die Header transferiert, keine Inhalte. Ein Blick auf die responseText Eigenschaft beweist es.

Die send Methode schickt den Request samt allfälliger gesetzter Header zum Server, der dann die Antwort - in unserem Falle synchron - zurückschickt. Uns bleibt dann nur noch das Objekt zu zerstören.

Schlußbemerkung

Das ServerXMLHTTP Objekt kann natürlich noch einiges mehr - so zum Beispiel auch mit Cookies oder Proxy Servern umgehen. Diese Information findet sich in der Dokumentation, den Link dazu in der Links Sektion des heutigen Artikels.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

Erstellen eines HTTP Test Tools
Kopieren verboten - Lizenzsicherung bei ASP Scripts
Laden von Dateien aus dem Web mit ASP
Meta Tags von fremden Seiten parsen
Scrapen von Webseiten
Sonderzeichen korrekt grabben mit XmlHttp

Links zu anderen Sites

MSXML Parser 3.0 Release
XML Developer Center
XML SDK Documentation

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.