Välkommen till notessidan, testa gärna Intrapages

Gå till förstasidan
Behöver du en snabb och effektiv konsult för Lotus Notes och Domino eller en offert på en applikation ?  kontakta mig nu
  Sök
 Java HTML parsing i xPages  1

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.






(See attached file: xhtmlparser.zip)
Lämna gärna en kommentar
File TypeSizeFile NameDate
application/x-zip 637 KB xhtmlparser.zip 2011-01-10 17.05
25 jan 2010  |   Länk till denna post | 1 personer gillar denna post   
2A0649CF175A6623C12576B4005C941523.22.212.158
Kommentarer:1
2010-01-25 11:41:39 CET - Joacim Boive
Precis vad jag letat efter!

Tack!


Mvh

/Jocke
Kommentera denna post:
Namn:
Epost:
Skriv en kommentar:




Observera: Om du skriver en giltig epost adress kommer du få mail om någon annan svarar på denna post. Din epost adress visas aldrig här.

Du kommer också få ett bekräftelsemail inom 5 minuter, om  inte, kontrollera din spam folder och makera meddelandet som "inte spam" så kommer det till din inbox nästa gång.
 Prenumerera på nya poster
Senaste Kommentarerna

Svenska Helgdagar i IBM Notes (2)

Från: Mikael Eriksson

Holidays.nsf är 0kB dvs. den innehåller ingenting, varför är det så?

Svenska Helgdagar i IBM Notes (2)

Från: Jesper Kiaer

Like this: With both the Administrator and the User side of it. http://nevermind.dk/nevermind/blog.nsf/subject/importing-holidays-into-the-lotus -notes-calendar

Ytria - Bra verktyg för utvecklare och administratörer (6)

Från: Roy Rumaner

valeric, I don't know why you think anyone would give you the serial number for a copy of scanEZ. Ytria is in the business of selling their products not giving them away for free which is why they put a serial number on there in the first place. What you are asking for is the same thing as stealing and that is unacceptable in this industry. Pay for the tools you need and you will find out that they are worth much more than you paid for in the first place.

How to install IntraPages - 7 easy steps (5)

Från: Sinisa

Hi First: great work! The best xpage application that I have seen so far... I am getting a strange problem with version 1.8 in IE8 (FF & Chrome are fine). But your public version 1.9 Beta seems to work fine. Is there any way to get the beta version just to see if I'll have the same problem on my server? Thanks, Sinisa

How to install IntraPages - 7 easy steps (5)

Från: Sean Cull

could you provide some guidance for people wanting to install the demo on a server that has no anonymous access e.g. how can you make an existing person an administrator ? Thanks, Sean

How to install IntraPages - 7 easy steps (5)

Från: Thomas Adrian

also make sure your url point correctly , should end with content=news

How to install IntraPages - 7 easy steps (5)

Från: Thomas Adrian

Could you send me screenshots of your problem thomas.adrian (a) consili.se have you tried to reload the page, I have seen this problem but it should only occure the first time the page loads.

How to install IntraPages - 7 easy steps (5)

Från: Ravi

Really appreciate your effort on the intrapages. I have been trying to use this application. On my startpage i always see the loader gif without any content. Is there any setup issue?

How to reduce build time in large XPages apps (4)

Från: Simon O'Doherty

SSD also helps. :)

klicka för att ladda om notessidan