webForumDet fria alternativet

Ladda ner HTML och läsa taggar

JavaScript

4 svar · 389 visningar · startad av nitro2k01

Medlem sedan aug. 20039 340 inlägg
Frågan#1

Jag använder javascript för att ladda ner HTML-dokument och undersöka dem. Ladda ner dokumenten vet jag hur jag ska göra med XmlHttpRequests. Det jag gör nu är att jag använder indexOf och substring för att leta reda på saker och ting i det jag har laddat ner.
Jag vill hitta ett bättre sätt. Om jag till exempel har en bild i ett nerladdat dokument som jag vet har denna form:

<img id="ett_id" src="http://domän/bild.gif" />

Så vill jag plocka ut http://domän/bild.gif, eller mer generellt allt mellan <img id="ett_id" src=" och " />.
Men jag vill göra det med hjälp av regular expressions eller ännu hellre genom att parsa filen som xml och läsa ut attributen. Någon som har en idé?

Medlem sedan dec. 20025 483 inlägg
#2

Med re är det inga problem att parsa attribut. För ditt exempel kan det se ut enligt följande:

var doc = "..."; // Antag att du läst in dokumentet i denna variabel

var re = /<img id="\w*" src="([\w\/\.:]*)" \/>/gi,
    elm;

while (elm = re.exec(doc))
    alert(elm);
}

I while-loopen når du sedan src-värdena med elm[1].

Notera att du kanske får ange fler tillåtna src-tecken än vad jag gjort.

:)

Medlem sedan sep. 20021 655 inlägg
#3

Varför inte söka bland nod-träden genom DOM?
Eftersom de gör det på http://developer.apple.com/internet/webcontent/XMLHttpRequestExample/example.html antar jag att du också kan göra det.

Medlem sedan aug. 20039 340 inlägg
#4

jag kanske borde satsa på DOM-modellen.
Men tills jag lär mig mer om detta: Hur ska Peters exempel utformas om taggen kan ha andra attribut än id och src, och jag dessutom vill ha ut ett specifikt id?

Medlem sedan juni 20008 205 inlägg
#5

Det är skitjobbigt (relativt arbetsinsatsen som krävs för att köra med DOM).

var dinRequest = skapaOchLaddaEnXmlHttpRequest();
var imgID = "ett_id";
alert("bilden finns på " + dinRequest.responseXML.getElementByID(imgID).src);
256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)