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 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
Sön - sharepoint (R:1)
Sön - räkna and antal and besökare (R:0)
Sön - browser (R:17)
Sön - stoppar and mail (R:1)
Sön - korrupt (R:3)
Sön - böcker (R:0)
Sön - kalendern (R:12)
Sön - feature (R:15)
Sön - print and mime (R:2)
Sön - länka (R:0)
Sön - databasen (R:94)
Sön - access (R:47)
Sön - outlook (R:15)
Sön - webanvändare (R:0)
Sön - google and maps (R:6)
Sön - juffe (R:2)
Sön - uidoc.print (R:1)
Sön - java and lotusscript (R:26)
Sön - besök (R:0)




Databasstatistik Blogg
Uppdateras var 15:e Minut

Antal Poster:562
Antal Kommentarer: 1381
Alla sidvisningar idag:
Unika Besökare idag:
Databasstorlek: 184,25Mb
Fixup: 2019-07-21 00:31:05
FT:2019-07-22 07:13:00
DB Procent använd: 99,8
Antal Agenter: 42
Antal Formulär: 65
Antal Vyer: 60
Antal Dokument: 7933
Antal Image Resources: 108
Antal Subformulär: 18
Antal Scriptbibliotek: 11
Totalt Antal Designelement: 576
Antal Attachments: 159
Antal Konflikter: 0
Server version 1: 405
Server version 2: Release 9.0.1FP9|August 14, 2017
Server Plattform: Windows/64
Ändrad: 2019-07-22 09:01:26
Server Tidszon: Z=-1$DO=1$DL=3 -1 1 10 -1 1$ZX=131$ZN=W. Europe
Region:
Kommentarsspam Idag: 5
Kommentarsspam Totalt: 17957


BlogRankers.com

Top Sites at iWEBTOOL.com

Fight Spam! Click Here!

Bloggtoppen.se

Listed on BlogShares

Increase website traffic

Top Internet Blogs

Site Checker