NOTESSIDAN

Allt om Lotus Notes & Domino




Java HTML parsing i xPages

Att hämta information från andra websidor är inte så lätt med javascript eftersom javascript bara tillåter att man hämtar från sidor på samma domän. men om man gör detta med Server Side Javascript så funkar det bra, jag har visat detta tidigare med bland annat Google translate.

Det jag ska visa nu är hur man hämtar en websida och sedan hittar den information man vill ha och visar detta på sin egen websida. i mitt exempel ska jag hämta dagens börskurs från dagensindustri.se.


För att underlätta parsningen använder jag mig av ett redan befintligt opensource javabibliotek "HTML Parser" för att hitta rätt information. Mer info om detta hittar du på nedan länkar.

http://htmlparser.sourceforge.net/
http://htmlparser.sourceforge.net/javadoc/index.html


Steg 1:
Lägg in javabiblioteken i din notesdatabas och peka ut "lib" att ligga i "build path" enligt nedan bild





Steg 2:
Inspektera källan på dagensindustri.se och hitta något som hjälper oss att hitta det värde vi behöver.
i detta fall kommer jag att använda mig av "Class=StockClockChange".





Steg 3:
Skapa en xPage och en ComputedField och lägg in följande kod som värde.


try{
var p = new org.htmlparser.Parser("http://di.se/Funktioner/StockClocks.aspx");
var filter = new org.htmlparser.filters.CssSelectorNodeFilter("a[class=StockClockChange]");
var list:org.htmlparser.util.NodeList = p.extractAllNodesThatMatch(filter);
list.elementAt(0).toHtml();

}catch(e){
e;
}

Jag använder mig av metoden CssSelectorNodeFilter i htmlparser som jag tycker är smidig, här kan man ange en standard CSS2 selektor för att hitta sin data som jag redan kan eftersom man använder denna mycket i bland annat jQuery eller Dojo.

Här är en snabb beskrivining av raderna i koden, mer info finns i javadoc för html parser

Rad1: hämta websidan
Rad2: skapa ett filter som bara returnerar alla "a" taggar med klassen "StockClockChange"
Rad3: Skapa en lista och fyll den med dom taggar vi valt
Rad4: Hämta första "a" taggen och returnera värdet.








Steg 4:
Resultatet visar värdet 0,5 som är hämtat från dagensindustri.se i det ögonblicket som sidan laddades.
om man vill kan man såklart lägga in kod som uppdaterar computedvalue regelbundet med partial refresh och på så sätt få en live uppdatering.





Att tänka på är att man alltid måste ladda hela websidan innan man kan "parsa" vilket kan slöa ner sidan. Men man behöver ju inte använda sig av en xPage utan istället kan inläsningen göras från t.ex. en agent och på så sätt uppdatera dokument med information från andra websidor.

Mitt exempel kommer bara fungera så länge websidan på dagensindustri.se har samma struktur.






xhtmlparser.zip



Relevanta Poster på Notessidan:



Fler Poster om:

Fler bloggar om:

Technorati:

Delicious:
Publicerad 2010-01-25 | Kommentarer: 1 | Läsningar: 60

Kommentarer

Joacim Boive ( 2010-01-25 11:41:39 )



Sök på Notessidan
Thomas Adrian
ThomasCertifierad utvecklare och administratör inom Notes & Domino

Kontakta mig







Senaste Sökningarna på Notessidan
Tor - shared and memory and from and a and previous and notes and domino and run and has and been and detected and this and process and will and exit and now (R:0)
Tor - spelo (R:0)
Tor - importera and helgdagar (R:1)
Tor - databaser (R:59)
Tor - meta (R:3)
Tor - kizz and låtar (R:0)
Tor - Notes and error: and Someone and else and deleted and this and index and while and you and were and updating and it (R:0)
Tor - mail.sll.se (R:0)
Tor - dir (R:3)
Tor - björn and ajax (R:0)
Tor - personlig and bild and mail (R:1)
Tor - lotto (R:4)
Tor - RSS and Domino (R:18)
Tor - blacklist (R:1)
Tor - post and blank (R:0)
Tor - create (R:15)




Databasstatistik Blogg
Uppdateras var 15:e Minut

Antal Poster:506
Antal Kommentarer: 880
Alla sidvisningar idag:
Unika Besökare idag:
Databasstorlek: 1876,25Mb
Fixup: 2010-06-23 09:06:13
FT:2010-07-29 18:03:41
DB Procent använd: 61,6
Antal Agenter: 42
Antal Formulär: 65
Antal Vyer: 57
Antal Dokument: 3133
Antal Image Resources: 105
Antal Subformulär: 18
Antal Scriptbibliotek: 11
Totalt Antal Designelement: 490
Antal Attachments: 153
Antal Konflikter: 2
Server version 1: 368
Server version 2: Release 8.5.1FP1|January 05, 2010
Server Plattform: Windows/32
Ändrad: 2010-07-29 18:31:26
Server Tidszon: Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=95$ZN=W. Europe
Region: sv
Kommentarsspam Idag: 0
Kommentarsspam Totalt: 3253


BlogRankers.com

Top Sites at iWEBTOOL.com

Fight Spam! Click Here!

Bloggtoppen.se

Listed on BlogShares

Increase website traffic

Top Internet Blogs

Site Checker