webForumDet fria alternativet

Ladda ner HTML och läsa taggar

4 svar · 389 visningar · startad av nitro2k01

nitro2k01Medlem sedan aug. 20039 342 inlägg
#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é?

Peter SMedlem 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.

:)

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

nitro2k01Medlem sedan aug. 20039 342 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?

spangoMedlem 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);
137 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)