Parse Html > Treeview ? c#?

poruka: 7
|
čitano: 1.011
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
12 godina
neaktivan
offline
Parse Html > Treeview ? c#?

Ima li neki način da iz html stranice automatikom dobijem stablo ili tako nešto čime bih mogao lakše baratati podacima koji se nalaze na stranici, da su raspoređeni po elementima i da mogu po atributima ili nečemu ih filtrirati pa da ih spremim u bazu itd

 
0 0 hvala 0
10 godina
neaktivan
offline
Parse Html > Treeview ? c#?
Poruka je uređivana zadnji put pet 29.4.2016 21:49 (tLeon).
Moj PC  
0 0 hvala 0
15 godina
offline
12 godina
neaktivan
offline
Re: Parse Html > Treeview ? c#?
14 godina
offline
Parse Html > Treeview ? c#?

HTML Agillity Pack


Koristio sam ga davno, ali uglavnom znam da on omogućuje iteriranje kroz elemente html-a poput stabla.

Moj PC  
0 0 hvala 0
12 godina
neaktivan
offline
Re: Parse Html > Treeview ? c#?

Pokušavao sam s tim, ali ne uspijevam nikako dokučiti tu Xpath sintaksu ili negdje drugdje griješim

 

Bi li znao sparsati ovakvu jednu neurednu stranicu:

 

http://jsbin.com/ruzudadoca/1/edit?html

 

pomoću ovog koda dobijem zadnja 3 p elementa ali u jednom čvoru

var nodes = new List<HtmlNode>();
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("/html/body/div/div[2]/div[2]/div[2]/div[3]/div/div"))
{
nodes.Add(node);

Console.WriteLine(node.InnerText);
}

 

S obzirom da stranica ne izgleda uvijek jednako, trebao bih dinamički iterirati kroz te p elemente a ponekad i div elemente, i prepoznao bih da sam došao do početka liste koju želm scraepeati  kada naleti na zadnji naslov "Popis elemenata" prije nego krenu peteroznamenkasti <b>IDjevi<b>. Tu vjerojatno bi trebao i neki regex? A trebao bih raspodijeliti  naslov i ID koji se nalaze zajedno u b elementu <b>5znamenkastiID i naslov<b> i posebno opis.

 

 Je li uopće moguće dinamički generirati Xpath ovisno o nekom uvjetu.

 

Zar je nemoguće da automatski generira kompletno stablo kao strukturu neku kojom bih mogao baratati C# kodom a ne statičkom Xpath putanjom ?

Poruka je uređivana zadnji put pon 2.5.2016 22:38 (bgm256).
12 godina
neaktivan
offline
Re: Parse Html > Treeview ? c#?

evo pokušao sam drugim pristupom, i iako vjerojatno nije idealno rješenje, it gets the job done,

prepoznajem te svoje "iteme" u paragrafima pomoću regexa po 4 znamenkastom IDu sa forward slashom

i sat trebam brdo tih regexova smislit da si odvojim šta mi treba od toga jer drugačije ne znam, probao sam sve

Fizzler, HtmlAgilityPack, Xpath....ne mogu skužit to

 pa sad radim sa stringom umjesto sa strukturiranim stablom

 

string url = "nekiurl";
var Webget = new HtmlWeb();
var doc = Webget.Load(url);
string sample;
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//p"))
{
sample = node.InnerText;
Regex rgx = new Regex("[0-9]{4}/");
if(rgx.IsMatch(sample))
Console.WriteLine(sample);
}

Poruka je uređivana zadnji put uto 3.5.2016 17:39 (bgm256).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice