Eme cikkben beszeretném mutatni ezt a remek dll-t minden c# fejlesztőnek, hisz nagyon megkönnyíti az ember életét, ha van egy ilyene. Ezzel a cuclival könnyedén ki tudjuk szűrni a html elemekből a nekünk tetsző tartalmakat. Legjobb szituáció, ha szükségünk van egy console applicaton ra, ami felnéz egy weblapra, és kiszedi egy minta alapján a szükséges információt, egy <h1> közül például. Persze ezt manuálisan is meglehet írni, de most komolyan ki akar órákat regexezni?
A "project" ezen a webcímen érhető el. A cikk további részében megmutatom, hogyan is nézki működésközben a dll.
A tervünk legyen az, hogy eme mintából <span class="forumtitle" title="akarmi">Alma</span> Kinyerjük az alma szót, hogyha van még egyezés a mintára, akkor azt is nyerjük ki.
Első lépésként hozzá kell adnunk a projectünköz a dll-t. Részletessen erről most nem írnák, MS Visual C# baromi jól elintézi ezt, néhány kattingatás után.
Második lépésként megkell írnúnk a mintát, ami a mi esetünkben így nézki:
public string pattern_h1 = "//span[@class='forumtitle']";
A project honlapján lehet tájékozódni arról, hogy miért is így néz ki a minta.
Harmadik lépésünk példányosítani az osztályokat.
HtmlAgilityPack.HtmlDocument htmldoc = new HtmlAgilityPack.HtmlDocument();
HtmlAgilityPack.HtmlWeb htmlweb = new HtmlAgilityPack.HtmlWeb();
Mivel, nekünk a webre is ki kell menni, ezért szükséges a htmlweb osztály. Úgyis lehet csinálni, hogy lehúzzuk a távoli szerverröl a html filet a gépünkre és a htmldoccal azt nyitjuk meg, de így szerintem egy picit egyszerűbb :D
A negyedik lépésként megnyitjuk a weblapot adott kódólással, és egy tömbbe pakoljuk a <span> tartalmait. Ez kódba is nagyon egyszerű.
htmldoc = htmlweb.Load("http://www.url.com/",Encoding.GetEncoding("iso-8859-9"));htmldoc.OptionReadEncoding = false;
htmldoc.OptionFixNestedTags = true;
if (htmldoc.DocumentNode.SelectNodes("//span") != null)
{
int i = 0;
foreach (HtmlAgilityPack.HtmlNode span in htmldoc.DocumentNode.SelectNodes(pattern_h1))
{
array[i] = span.InnerText;
i++;
}
}
A project weblapján még több examplet, segítséget találtsz. Mindenképp látogass el oda, ha ezt akarod használni fejlesztésre.