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

Webpage-Grabbing mit dem XML Parser

Geschrieben von: Christoph Wille
Kategorie: ASP Tricks

This printed page brought to you by AlphaSierraPapa

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.

This printed page brought to you by AlphaSierraPapa

Download des Codes

Klicken Sie hier, um den Download zu starten.
http://www.aspheute.com/code/20010328.zip

Verwandte Artikel

Erstellen eines HTTP Test Tools
http:/www.aspheute.com/artikel/20000508.htm
Kopieren verboten - Lizenzsicherung bei ASP Scripts
http:/www.aspheute.com/artikel/20020411.htm
Laden von Dateien aus dem Web mit ASP
http:/www.aspheute.com/artikel/20000519.htm
Meta Tags von fremden Seiten parsen
http:/www.aspheute.com/artikel/20010803.htm
Scrapen von Webseiten
http:/www.aspheute.com/artikel/20000824.htm
Sonderzeichen korrekt grabben mit XmlHttp
http:/www.aspheute.com/artikel/20011113.htm

Links zu anderen Sites

MSXML Parser 3.0 Release
http://msdn.microsoft.com/downloads/default.asp?URL=/code/sample.asp?url=/msdn-files/027/001/596/msdncompositedoc.xml
XML Developer Center
http://msdn.microsoft.com/xml/default.asp
XML SDK Documentation
http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/xmlsdk/xmls6g53.htm

 

©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.