Webpage-Grabbing mit dem XML Parser
Geschrieben von: Christoph Wille 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ßbemerkungDas 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 CodesKlicken Sie hier, um den Download zu starten. Verwandte Artikel
Erstellen eines HTTP Test Tools Links zu anderen Sites
MSXML Parser 3.0 Release 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.
©2000-2006 AspHeute.com |