Hej jeg vil gerne lave en søgefunktion som kun finder det søgte i en html fil hvis alle søgekriterier er med. eks. følgende streng: table.table.img
der skal den kun returnere det image som er placeret - allerførst i en table og dernæst i en nested table. Er der tidligere på siden eks. en struktur med: table.table.a skal denne springes over. Jeg har bare brug for kode i grove træk - det vigtige er at den ikke søger på table.table.a men hopper videre til table.table.img - Hvad vil den mest optimale søgefunktion være...
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
vil umiddelbart tro at det bedste ville være at lave et DOM af siden og lave søgningen i den.
Efter lidt søgning på nettet viser det sig dog at det er svært at finde nogle DOM Inspectors som kan bruges i sin egen kode, de er alle færdige programmer :S
public void FollowNode(HtmlNode node) { ProcessNode(node); if (node is HtmlElement) { HtmlElement tempHN = (HtmlElement) node; if (tempHN.Nodes != null) { HtmlNodeCollection children = tempHN.Nodes; foreach (HtmlNode child in children) { if (child is HtmlElement) { FollowNode(child); } }
} }
} public void ProcessNode(HtmlNode node) {}
Jeg har fået lavet ovenstående - en depth first search - spørgsmålet er nu hvordan jeg får søgt på eks. følgende ".*.table.table.img". Stjernen er ment som relativ søgning - dvs. søg i strukturen indtil der findes en tabel som har "tabel" som child og "img" som child
Brug XPath. På en dom findes der typisk en funktion der hedder SelectNodes eller lign. Den tager en xpath som returnere de node du er ude efter. f.eks.
/html/*td vil retunere alle td. XPath er ret stærkt mange muligheder vil råde dig til at læse lidt om dem på nettet da hurtigt kan blive din ven. Har selv arbejdet 1.5 år med extracting af html. Og det bedste er en kombination af Regex og XPath.
tak for et svar - XPath kender jeg ikke men lyder interessant - eneste problem er at det dom jeg bruger ikke har en "selectnodes" - har kildekoden til dom'et - kan jeg evt. selv implementere xpath? hvad er det præcist?
Hun siger hun har en DOM så vi må vel gå ud fra det er wellformed. Og de fleste DOM har en eller anden form for XPath indbygget. Men kunne være godt lige at se lid tkode.
Det er så nok ikke et DOM - men html'en placeres i en tree struktur. Er det eneste af den slags jeg har kunnet finde med kilde kode til og skrevet i c#
Har lige siddet og leget lidt med hans kode og kan se den returnere en XHTML som du kan proppe i et XmlDocument og derfra bruge XPath. Inden du lader dig skræmme skal jeg lige sige XPath er ret simpelt of ret lige til. Men skal lige sige han HTML parser desværre langt fra virker på alt html. Det er der faktisk ikke mange parseere der gør. Hvorfor bruger du ikke MSHTML som har en indbygget dom. Det er den IE bygger på.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.