Sök på  
Tekniker In English Favorit Min profil 0 nya iMail Kontakta Hjälp  
 

XMLHTTP - Att läsa av och skriva från annan hemsida


Av: Johan Davidsson
Publicerad: 2005-06-07

XMLHTTP används för att läsa av andra hemsidors innehåll, det finns externa komponenter till IIS såsom ASPTear. Men med XMLHTTP och RegExp (Regular Expressions) kan du göra en hel del. Att läsa av andra hemsidors innehåll kan vara praktiskt för flera ändamål, tex. om du har en webbshop och vill veta vad paketet befinner sig på posten, men mitt exempel ska hämta Innebandyns Elitserietabell

Innehåll


Relaterade artiklar


 
Tänk på att när du hämtar en sidas innehåll måste målets laddningstid läggas på den befintliga, vilket då besökarna kan uppleva som på tok för tidskrävande. Dessutom ska inte förglömmas att du snor serverkraft från målets sida, något som förmodligen inte uppskattas. En lösning på bägge dom här problemen när du har information som inte behöver uppdateras varje gång en person besöker sidan är att lagra informationen i en .txt fil och uppdatera emellanåt, antingen att du låter besökaren göra det genom att räkna tiden från senaste hämtningen eller att du ställer in en ”Schemalagd aktivitet” som du hittar i Windows under kontrollpanelen.

Set objGetPage = Server.CreateObject("Microsoft.XMLHTTP")
objGetPage.Open "GET","http://www.innebandy.se/Table.asp?TournamentId=25424", False

Vi börjar med att skapa objektet och döper det till objGetPage, sedan öppnar vi det och anger samtidigt adressen, http://www.innebandy.se/Table.asp?TournamentId=25424, till sidan vi vill läsa av.

objGetPage.Send
strHTML=objGetPage.responseText

Efter det aktiverar vi objektet, för att sedan skriva ut innehållet använder vi ’responseText’. För att göra resten av koden smidig lägger vi den i en sträng som vi kallar strHTML.

objGetPage.Close
Set objGetPage = Nothing

Vi avslutar sedan objektet så att det inte hänger kvar och segar ner servern.

Emellan här vill du förmodligen plocka bort målets design och onödig information, du gör det lättast med RegExp. Spana in artiklar vars ämne enbart är RegExp.

Då var det alltså dags att spara informationen (som du förhoppningvis har rensat med RegExp).
Set objFSO= CreateObject("Scripting.FileSystemObject")
Set objTxt = objFSO.CreateTextFile(Server.MapPath("XMLHTTP ") & "/elitserien.txt") 

objTxt.WriteLine strHTML

objTxt.Close
Set objTxt = Nothing
objFSO.Close
Set objFSO = Nothing

Vi använder FSO för att skapa filen ‘Elitserien.txt’ under mappen ’XMLHTTP’. Vi skriver sedan in hela strängen med ’WriteLine’. Sist men ack så viktigt avslutar vi objekten.

Till slut för att skriva ut informationen på din hemsida kan du använda SSI (Server Side Inlcude)
<!-- #Include file=”XMLHTTP/Elitserien.txt” -->


Innan du tar information från andra hemsidor bör du fråga ägaren om det är ok, lagen i frågan är väldigt svårtolkad men att som i tex. mitt exempel ta en tabell från ett förbunds sida borde inte vara några problem.

 
Vad tyckte du om artikeln?
Ge skribenten eller andra läsare dina tips och kommentarer. Betygsätt artikeln och kommentera gärna anledning till det satta betyget.
 
Visningar: 4845
Har röstat:  3

Snittbetyg: 67%

Rubrik 
Text

 
Andreas JagelundIntressant, men...2005-06-08 18:03:40
...skulle vilja se mer av användningen av RegExp som ju är den "svåra" biten i det hela...

Fotnot: när det gäller posten så behöver man inte använda XMLHTTP eftersom man kan få en snygg XML-fil utläst genom en webtjänst som posten driftar...
Simon Dahlbacka..den använder ju inte xml delen2005-07-10 18:48:33
Du kan göra så där (speciellt om det inte är en well-formed xml sida du vill ha), men gräva fram relevant information ur ett DOM träd är enklare, och det får du ju gratis genom responseXML (eller vad den nu exakt heter)
Stefan NorinderFråga2005-08-17 13:57:12
Måste man ha tillstånd från den vars sidan man läser för att få göra det?
David AnderssonFråga2005-12-13 17:39:50
Perfekt! Precis vad jag letat i timmar efter...

Har dock en liten fråga: jag får Microsoft VBScript runtime error '800a01b6': "Object doesn't support this property or method: 'objGetPage.Close'"

Är inte det märkligt?

  Se utskriftsversion

pellesoft it - en resurs att lita på | copyright © 1986-2010 | regler & avtal | cookies