Forum » Programiranje » [.NET] Website parse
[.NET] Website parse
FXMagic ::
Mi lahko kdo pove, kako naj iz neke spletne strani dobim ven podatke? source strani dobim kot string, zdaj pa bi moral v tem stringu poiskat nekaj podatkov, ki jih rabim. Sicer vem, kako je stran strukturirana (iz katerega taga oz. div-a moram vzet podatke) ampak vseeno ne vem, kako naj se tega lotim.
npr.
Zdaj bi rad dobil samo ta tekst znotraj div-a.
Tega je seveda še več po celotni strani
Ker to delam prvič, bi prosil, če mi lahko nekdo opiše, kakšen je najbolj primeren način za "luščenje" podatkov iz spletne strani.
npr.
Zdaj bi rad dobil samo ta tekst znotraj div-a.
<div id="prvi" class="xxx"><p>Nek tekst znotraj diva...</p></div>Tukaj pa bi rad dobil povezavo, torej abc.html
<div id="drugi" class="xxx"><a href="abc.html">Link</a></div>
Tega je seveda še več po celotni strani
Ker to delam prvič, bi prosil, če mi lahko nekdo opiše, kakšen je najbolj primeren način za "luščenje" podatkov iz spletne strani.
kulSMS ::
najlažje tako da po stringu iščeš < div id="prvi" class="xxx">< p > s kako funkcijo tipa
Pos('< div id="prvi" class="xxx" >< p >',htmlstring) vrne položaj tvojega želenega stringa v htmlstring
potem pa od tam naprej iščeš še string za konec < /p >< /div >
in tisto kar je vmes skopiraš
če pa "xxx" ni vedno enak potem pa poiščeš tisto položaj < div id="prvi" class=" potem preveriš če tisto kar sledi ustreza in uporabiš oz spustiš in greš naprej.
lako pa tudi uporabiš kak parser za html, vendar se mi ne zdi smiselno za ti dve različni vrstici.
Pos('< div id="prvi" class="xxx" >< p >',htmlstring) vrne položaj tvojega želenega stringa v htmlstring
potem pa od tam naprej iščeš še string za konec < /p >< /div >
in tisto kar je vmes skopiraš
če pa "xxx" ni vedno enak potem pa poiščeš tisto položaj < div id="prvi" class=" potem preveriš če tisto kar sledi ustreza in uporabiš oz spustiš in greš naprej.
lako pa tudi uporabiš kak parser za html, vendar se mi ne zdi smiselno za ti dve različni vrstici.
darkolord ::
Jap, z regexi je sigurno najbolj elegantno. Na primer (na hitro spacano):
id="prvi".*?><p>(?<text>.*?)</p>.+?id="drugi".+?href="(?<link>.*?)">
Zgodovina sprememb…
- spremenilo: darkolord ()
Matej_ ::
Še lažje bi šlo, če lahko stran tretiraš kot xml. Če je torej stran veljaven xml (xhtml) dokument, lahko uporabiš v .net objekt XmlDocument ali recimo XPathDocument. Potem pa se preprosto sprehodiš po strukturi in prebereš atribut oziroma vsebino ali ime tag-a (podpora za skoraj vse načine iskanja, izbiranja, pomikanja po objektu). V tvojem primeru bi lahko z eno vrstico izbral vse elemente DIV in potem v nadaljevanju iz te množice prebral izbran(e) atribute.
Če stran ni veljaven XML, ga lahko v veljavnega "spremeniš" (ali pa se po njem vsaj sprehajaš enako kot zgoraj) preko kakega drugega parserja (oz. knjižnice), ki je manj občutljiv za napake. Eden od takih je recimo Html Agility.
Je pa seveda tu potrebno razmisliti tudi o potratnosti (spominski, procesorski) zgornjega načina (čeprav so orodja za kar dobro optimizirana). Če rabiš le par znakov in če obenem še natanko veš kje se nahajajo morda ni smiselno.
Če stran ni veljaven XML, ga lahko v veljavnega "spremeniš" (ali pa se po njem vsaj sprehajaš enako kot zgoraj) preko kakega drugega parserja (oz. knjižnice), ki je manj občutljiv za napake. Eden od takih je recimo Html Agility.
Je pa seveda tu potrebno razmisliti tudi o potratnosti (spominski, procesorski) zgornjega načina (čeprav so orodja za kar dobro optimizirana). Če rabiš le par znakov in če obenem še natanko veš kje se nahajajo morda ni smiselno.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
! | Vse, kar ste si želeli vprašati o CSS, pa si niste upali. (strani: 1 2 3 4 … 23 24 25 26 )Oddelek: Izdelava spletišč | 347743 (6880) | sunniegoldie |
» | HTML in CSS težava pri razporeditvi DIV elementovOddelek: Izdelava spletišč | 979 (799) | MisterR |
» | jquery in div-i (strani: 1 2 )Oddelek: Izdelava spletišč | 11353 (10091) | lisjak |
» | getElementsByTagName ne dela v ChromuOddelek: Programiranje | 1692 (1430) | win64 |
» | JavaScript offsetTop in brskalnikiOddelek: Izdelava spletišč | 1002 (934) | shorvat |