Forums

General Betting

Welcome to Live View – Take the tour to learn more
Start Tour
There is currently 1 person viewing this thread.
Stow_judge
03 Apr 12 18:27
Joined:
Date Joined: 10 Mar 01
| Topic/replies: 10,954 | Blogger: Stow_judge's blog
I have had a few databases written to strip various bits from a couple of websites and fancy trying to write one of my own.
I wrote some code and managed to grab the bits of text I wanted with an incomplete program, where I was running to a break point.
When I tried to put the thing together, some of the getElementsByTagName bits that had previously grabbed bits of text ceased to work.

The plan was to grab the forecast prices to go with my ratings. So, starting from http://www.attheraces.com/tomorrowsracing/ I would first grab the racelinks e.g. http://www.attheraces.com/card.aspx?raceid=692426&meetingid=52194&date=2012-04-04&ref=fixtures&refsite=&nav=racecards and then grab the racetime, course and forecast SPs.

The grabbing of the links works fine. (NavigateAndWait is another bit of code that loads the webpage)


    Set x = New HTMLDocument
x.body.innerHTML = NavigateAndWait("http://www.attheraces.com/tomorrowsracing/")

    Set a = x.getElementsByTagName("span")

If a(i).className = "details" Then
  s = "http://www.attheraces.com/" & Mid((a(i).parentNode), 8, 300)

(grabs http://www.attheraces.com/card.aspx?raceid=692426&meetingid=52194&date=2012-04-04&ref=fixtures&refsite=&nav=racecards )


and I managed to grab "14:00 Lingfield (A.W.), 4 Apr 2012" from that page. (I did have it working using the classname race_title, but that has given up the ghost now as well.)

set a = x.getElementsByTagName("h3")

    s = a(i).innerText


but I can't seem to grab the forecast prices. The below worked in a previous bit of code, but not any more. Have tried many alternatives, without success.


Set a = x.getElementsByTagName("div")     
If a(i).className = "forecast" Then
s = a(i).innerText


Can anyone offer some assistance?
Pause Switch to Standard View Parsing the DOM with visual basic
Show More
Loading...
Report yeahyeahwhatever April 4, 2012 9:55 AM BST
I pull data off RP by parsing the DOM, never used ATR though so here goes:

Working off
http://www.attheraces.com/card.aspx?raceid=692426&meetingid=52194&date=2012-04-04&ref=fixtures&refsite=&nav=racecards
2pm Lingfield

This is how I understand things, you're using
Report yeahyeahwhatever April 4, 2012 9:57 AM BST
[attempt #2 - didn't like all those tags first time around...]


I pull data off RP by parsing the DOM, never used ATR though so here goes:

Working off
http://www.attheraces.com/card.aspx?raceid=692426&meetingid=52194&date=2012-04-04&ref=fixtures&refsite=&nav=racecards
2pm Lingfield

This is how I understand things, you're using h3 to grab race details. So before you pull the prices, are you also pulling runner ids (tr id="oddsrow_xxxxx")?

I'm not sure if you're just after the first price, say span id="odd_xxxxxx_13" or if you want all prices for a particular horse?  Won't you have an issue with not knowing which odds go with which horse though until you check every span id="odd_xxxxx_13" string?


For what it's worth, I'd get a list of runnerIDs and then just search for all span id="odd_runnerID" strings using find/instr/mid whatever to get all odds from all bookmakers.


A simpler approach may well be to use web queries and dump to Excel.  Although it adds a few seconds onto each page's processing time, it's often much easier to find info on an Excel sheet.  You can search and move around the sheet - it's certainly easier to find things that way, just locate the top horse and then use rngX.offset(X, X) to process all horses.
You could also use rngX.hyperlinks(1) to pull the url of any links.


I'll have a play though, see if I can get it all working with tags.
Report yeahyeahwhatever April 4, 2012 10:15 AM BST
ah... I didn't your post properly did I. damn.  Are you using div to pull the forecast string, ie

Forecast: 6/4 Heartsong, 4/1 Subtle Knife, 9/2 Auntie Mabel, 5/1 Vexillum, Betty Brook

I think you are... whereas I thought you wanted to pull all bookmakers odds from the table at the top of the screen.


Looking at the following bit of your code:

Set a = x.getElementsByTagName("div")     
If a(i).className = "forecast" Then
s = a(i).innerText

what happens when you run this -
do you get errors?
what do you get if you print out s?
Where do you reset/increment i?

thanks
Report yeahyeahwhatever April 4, 2012 10:19 AM BST
Ah, could this be it, when you pull

x.body.innerHTML = NavigateAndWait("http://www.attheraces.com/tomorrowsracing/")

and then, as you say, you use that to get an individual race-card... you are then pulling the innerHTML of that new page aren't you...


because if you don't, you're never to find your forecast string - it's not there to be found.
Report colonelll April 4, 2012 11:06 AM BST
i dont have any experiance of data collection from websites using vba or any other programming languge, so if my question is naive sorry. i just checked the website mentioned in the discussion. do u look for a particular information using text analysis on the basic html code or does vba have a level of abstraction for the html code where u can stracture the html code(in a way similar to webbrowsers) and look for data methodically? or do the websites mentioned above have api
would be nice if someone can suggest me references on programming related to working with data from websites
Report rn-betfair April 4, 2012 11:36 AM BST
You can get forecast data from Timeform using information from here http://forum.bdp.betfair.com/showthread.php?t=340
Report Stow_judge April 4, 2012 12:18 PM BST
yeahyeahwhatever, It's as you described, The idea is to grab a an individual race link, use that web address to grab the date, race time, course and betting forecast (all as one text string) for all the races.  I don't actually need to increment i, as each race has one forecast. (That just came over from the other program I started from.
The s = a(i).innerText shows nothing for s. (I'm using the Local window) and a break point after the line s = a(i).innerText

I had it working once, but have tried many combinations of innertext/outertext/innerhtml/outerhtml/firstchild/siblings etc without being able to grad the forecast again.
Report Stow_judge April 4, 2012 12:29 PM BST
colonelll, it's not just vba, other computing languages (.NET, java, PHP) can also be used.)
I have had a few databases written. The 1st few used regular expressions. The web pages were downloaded, then the text was parsed with regular expressions. (which are complex)
The method of navigating the DOM appears a lot more elegant and easier to understand.

DOM introduction
http://www.w3schools.com/dom/dom_intro.asp
http://www.quirksmode.org/dom/intro.html

How to Snatch HTML Using Visual Basic Code
http://www.developer.com/services/article.php/3113371/How-to-Snatch-HTML-Using-Visual-Basic-Code.htm

I'm tied to MS Access, as I have towards 50 or so databases. (horses, Greyhounds, Football, NFL) I am good once I have the data is databases, but am pretty poor at coding. One of the things I did design, was my own web based form  system. All the horse pages link to the race pages. I have lots of stats & links, including links that play all the horse videos.
Report Stow_judge April 4, 2012 12:30 PM BST
rn-betfair, thanks for that, I'll take a look.
Report yeahyeahwhatever April 4, 2012 12:31 PM BST
ok Stow, nothing like fiddling around with code to stop it from working... Grin

You have NavigateAndWait("http://www.attheraces.com/tomorrowsracing/") which brings up that page, is that the only NavigateAndWait call you have? 


I would expect to see another one underneath the following bit of code:

If a(i).className = "details" Then
  s = "http://www.attheraces.com/" & Mid((a(i).parentNode), 8, 300)

(grabs http://www.attheraces.com/card.aspx?raceid=692426&meetingid=52194&date=2012-... )



Something along the lines of

x.body.innerHTML = NavigateAndWait(s)

msgbox "value of i is " & i

Set a = x.getElementsByTagName("div")     
If a(i).className = "forecast" Then
s = a(i).innerText

msgbox s


We're just printing out i for reference - not important to the running of the code at all.
You should now have the forecast string (stored in s) displayed in a pop-up messagebox.

fingers crossed, that should do it.
Report Stow_judge April 4, 2012 12:35 PM BST
Thanks, I'll take a look this evening.
Report yeahyeahwhatever April 4, 2012 12:37 PM BST
colonell - sJudge has given you some good links there, but if you've never programmed before this is not a project for a beginner, not by any means.  Although the DOM does indeed provide an elegant solution, it's not an easy thing to grasp for a novice.


You might want to look at using web queries to dump a web page onto an Excel sp and then searching for the info you want using VBA within Excel.  Put a shout out if you want more help.
Report colonelll April 4, 2012 1:05 PM BST
thanks guys will have a llook on DOM as i have a few things in mind. yeahyeah had a bit of programming experiance but thanks for ur concern
Report Stow_judge April 4, 2012 11:17 PM BST
strURL = "http://www.attheraces.com/card.aspx?raceid=692458&meetingid=52199&date=2012...

    Set x = New HTMLDocument
    x.body.innerHTML = NavigateAndWait(strURL)

Set a = x.getElementsByTagName("h3")
s = a(i).innerText

    Set y = New HTMLDocument
    y.body.innerHTML = NavigateAndWait(strURL)

MsgBox "value of s is " & s

t = "test"

MsgBox "value of t is " & t

Set b = y.getElementsByTagName("div")
If b(j).className = "forecast" Then
t = b(j).innerText

MsgBox "value of t is " & t
                     
End If

-----------------------------------------------------------------

Break point set at End If

Code runs
S shown as "16:25 Clonmel (IRE), 5 Apr 2012" in the locals window
Message box shows correct value of s ("16:25 Clonmel (IRE), 5 Apr 2012")

I do not need a For next loop, though if I change s = a(i).innerText to s = a.innerText the code falls over and gives an error objecting to "s = a.innerText"  (error 438 Oject doesn’t support this property or method)

Do I need to reload the page as a new document? I think I tried with & without, without success in either case.

I set t to equal “test” and it is show in the message box.

The code runs to the break point (End If) and the line - MsgBox "value of t is " & t
Does not produce a message box at all (???) and also the value of t is still “test”
Report Getafix April 5, 2012 9:58 AM BST
A few things worth trying:

1) Has the page completely finished loading?... many webpages now use Ajax etc which dynamically load content.  I would suggest manually checking the whole page html (from your prog) versus the "get source" from a real webbrowser.  Check they are the same.  If you're using a webbrowser the document_loaded type events are very cumbersome and don't work well for dynamic loading.  You may end up with a loop that keeps checking the page has fully loaded before checking content ;)

2) your value for j is this correct?  You should be looping through the objects of b maybe you are but not presented your code?
Report Getafix April 5, 2012 9:59 AM BST
*You may end up having to code a loop that keeps checking the page has fully loaded before checking content ;)
Report yeahyeahwhatever April 5, 2012 11:52 AM BST
Getafix is correct in what he says about the page finishing loading, but as you have a NavigateandWait sub - which was clearly written by someone how knows what they're doing - and you're now "modifying" Happy this code to try and get it to do something new.... I don't think you need worry about it. 
Please tell us you haven't changed anything in NavigateAndWait Plain


let's try again, the variable s is not going to hold the forecast string because your revised code is not using the variable s in the way your previous example did!

strURL = "http://www.attheraces.com/card.aspx?raceid=692458&meetingid=52199&date=2012...

    Set x = New HTMLDocument
    x.body.innerHTML = NavigateAndWait(strURL)

Set a = x.getElementsByTagName("h3")
s = a(i).innerText

    Set y = New HTMLDocument
    y.body.innerHTML = NavigateAndWait(strURL)

MsgBox "value of s is " & s

t = "test"

MsgBox "value of t is " & t

Set b = y.getElementsByTagName("div")
If b(j).className = "forecast" Then
t = b(j).innerText

MsgBox "value of t is " & t
                     
End If



Your first NavigateAndWait statement is correct, but your second NavigateAndWait is pointless because it uses the same strUrl, and strUrl hasn't changed.  The reason I told you that you needed to bring in another NavigateAndWait was because you needed one to bring up all of tomorrow's races, and then another one to bring up an individual race. 

Did you type in the code example I gave you - did that run? 

The problem(s) with the latest code you've posted is that you've introduced variable j - have you declared that or was it already in the program?  What's the value of j?

I think the reason you may not be seeing the final msgbox is that j is an invalid index and so that piece of code is just ignored.  Also, do you know the data type of b?


SJ, what you're trying to do is admirable, but I do think this may be a little bit too much for you.  If you want to send me your code and I'll fix it and add comments so you can follow what's happening.  I can't see us fixing it by posting on here because you're changing the code in each reply. 

My email is detectivefireplace@hotmail.co.uk
Report Stow_judge April 5, 2012 12:56 PM BST
Thanks very much lads, I'll send you an e-mail yeahyeahwhatever.

I have not changed the NavigateAndWait statement. Your distinction between my coder and me was very accurate. One of us knows what we are doing wrt vb! Cry I thought the 2nd page load was probably pointless, but when something does not work, it's sometimes worth guessing a different method.

I was not trying to get the whole thing working at this stage (that failed earlier!), just the grabbing of the date, racetime, course and the betting forecast from a single page. (2 fields) I previously managed to grab the racelinks ok separately.

I did declare j as well as i. I don't believe that I need a For next loop, nor i or j, but as I said, if I turn s = a(i).innerText into s = a.innerText, I get the above mentioned error. I am just grabbing two fields off each race page. The 1st one works, but the grabbing the forecast prices does not. (It did once) Sad I think I tried setting i and j to zero and that was another bit of code guessing that didn't get me anywhere. BlushBlush

I'm not sure I know what you mean by the data type of b. I declared it in the same way from some previous code.

I'll either have to spend more time reading my Access 2000 VBA handbook (Susann Novalis) or go on that course I was thinking of.

http://www.microsofttraining.net/microsoft-access-training-london-2000-vba.php
Report Getafix April 5, 2012 1:05 PM BST
notice the s in getElementsByTagName - this is plural.  If you look at the docs you will see it returns an array/collection (you'll have to check as I can't rememver.  I would assume there are many div tags on that webpage and that is why you have to cycle until you get to the one you want.

I.e.,

b = y.getElementsByTagName("div")

for i = 0 to b.length -1 'or b.count - 1?
  If b(j).className = "forecast" Then
  t = b(j).innerText
next i


something along those lines.
Report Getafix April 5, 2012 1:06 PM BST
argh

b = y.getElementsByTagName("div")

for j = 0 to b.length -1 'or b.count - 1?
  If b(j).className = "forecast" Then
  t = b(j).innerText
next j
Report Getafix April 5, 2012 1:06 PM BST
btw I don't program in vb but this should give you the jist!
Report Stow_judge April 5, 2012 1:21 PM BST
Thanks v much. I did originally have the code as   

For i = 0 To a.length - 1

but kept getting an error from this bit of code. It did not occur to me that this was cycling through the div nodes, I naively thought that the classname bit would just snap to the right bit of html like magic! Grin BlushBlush
Report Getafix April 5, 2012 1:27 PM BST
if it still errors what is the error message... Guesses: do vb indexes still start at 1?  Or maybe one of the div's doesn't have a className and thus you have to check if that property exists or not because looking at it?  Could stick a "try catch" around it if you want to be lazy.
Report Getafix April 5, 2012 1:31 PM BST
*Or maybe one of the div's doesn't have a className and thus you have to check if that property exists or not *before* looking at it?
Report Stow_judge April 5, 2012 10:52 PM BST
Much to my amazement and I'm sure some of yours! , I have got it sorted. (or very close to it)
I think I was mixing up some a and b's and x and y's in the code (from my copy & paste of repeating bits of code) and also the position of the loops were key.

I don't understand all the code, particularly the actual adding of the data to the table just yet. I have it working, but don't understand it. If anyone could explain the code below to me, I'd be most grateful.

I'll post a bit of the table in my next post for all the doubters. Laugh

I'm sure I'll have more questions to come!

                Set r = CurrentDb.OpenRecordset("Race")
                With r
                    .AddNew
                    strVerdict = a(i).innerText
                    If Len(strVerdict) Then
                        .fields("Verdict").Value = strVerdict
                    End If
                    .Update
                    strVerdict = vbNullString
Report Stow_judge April 5, 2012 10:52 PM BST
    RaceDetails        Forecast   
    11:40 FAIRVIEW, 6 Apr 2012        3/1 Quick Delivery, 5/1 Crashfeever, 7/1 Spectral Moon, Shadow Pink, 10/1 She's Got Gears, 14/1 National Forest, Shaki, Rock The River, Sweet Latte, Delly's Delight, Gala Girl, 20/1 Theatre Royal, 25/1 Kontiki Time, Gina, 33/1 Shanti, Tristram's Gift   
    12:00 Compiegne (France), 6 Apr 2012        7/4 Tostaky Blue, 3/1 Le Bilboquet, 4/1 Stormy Howard, 6/1 Lady Ana, 10/1 Mystery Child, 20/1 Master Senora, Chichiteuse   
    12:15 FAIRVIEW, 6 Apr 2012        3/1 Hostile Takeover, 6/1 Sunny Spain, 7/1 Detzky's Tao, Bright Approval, 10/1 Katsamba, Captivator, 14/1 Londontown, Murphy's Magic, Love Is Magic, Kalamazoo, 20/1 Odonata, Ebro, Hamlet's Quest, 25/1 Moonston, Photo Shoot, Jacky Hanger, Abydos, 50/1   
    12:30 Compiegne (France), 6 Apr 2012        13/8 Pain Perdu, 2/1 Pareo, 7/2 Tagar Bere, 8/1 Plain Vanilla, 10/1 Street Secret, 14/1 Oscar Blaze, 20/1 Swakopmund, Art Of Dance, 25/1 Pleasant Dream   
    12:50 Auteuil (France), 6 Apr 2012        3/1 Finoro, Saint Remi, 4/1 Tell Everyone, 5/1 Saint De Garde, 7/1 Far West, 10/1 Storm Of Saintly, Saint Firmin, 12/1 Eden Des Cimes, 14/1 Aristo Cat, Kick On, 16/1 Troufion, Satan, Niquos, 20/1 Vasmin Des Bieffes, Spartakus   
    12:50 FAIRVIEW, 6 Apr 2012        5/1 Simply Believe, 11/2 Mega Mel, 7/1 Aspen Tree, Speedy Gone Dante, 8/1 Beyond The Best, Sorrento, Well Bred, Frigid, 10/1 La Salle, 20/1 Imalady, Alakush, 25/1 Gottabeseen, 33/1 Devon Debutante, Dilly Di, 50/1 Tamarack, Merry Maiden, Here's A Beau   
    13:05 Compiegne (France), 6 Apr 2012        7/2 Hurricane D'helene, 4/1 All Dynamite, 5/1 Meleagros, 8/1 Slikice, 10/1 Mutaawed, 12/1 Cape May, Valerian, 16/1 Delryaz, Pfundskerl, Soulside, Wanaba, Ad Fortem, 25/1 Start Your Engine, 33/1 Fox Kamikaze   
    13:20 Auteuil (France), 6 Apr 2012        5/2 Carlain, 3/1 Ultimatum Du Roy, Ironic, 4/1 Do You Jump, Umbertok, Short Cut, 7/1 Ulcar D'airy, Ballmat, Rosebel, 20/1 Biens Chers Freres   
    13:25 FAIRVIEW, 6 Apr 2012        6/1 Riveret, 7/1 La Bomb, What A Rose, Lunar Landing, 10/1 Mark Of The Divine, Phemba, Plaisir De Fete, Primary Trend, Cuban Coral, Tiger's Smile, 14/1 Jolly Jet, Last Lecture, 20/1 Pebble Path, 33/1 Condoleezza, I'm No Tortoise, Silver Heath, 50/1 S   
    13:35 Compiegne (France), 6 Apr 2012        9/4 Napoleony, 3/1 Bipe The Dust, 11/2 Uhadada, 6/1 New Boyfriend, 8/1 Apples Delight, 10/1 Kigspirit Alca, 20/1 Kokouchu, 25/1 Mambo Star, Thsaam   
    13:50 Auteuil (France), 6 Apr 2012        6/4 Esmondo, 3/1 Fubbs, 7/1 Blingless, 15/2 Theos An Einai, 8/1 Usual Suspects, 10/1 Catch One, 14/1 Viking Du Berlais, 16/1 Utopie Des Bordes, 20/1 Fortunateencounter   
    14:00 FAIRVIEW, 6 Apr 2012        4/1 Go Diego Go, 6/1 Doubledane, 7/1 Castlemartin, 10/1 Surfer Buzz, Dancinginthedesert, Lucky Flag, 12/1 Winterberg, The Berryman, Radetzky's Rebel, 16/1 Fifty Scent, Tottenham, Trouble Again, Speed Of Light, 20/1 Pay Packet, 33/1 Manifest Destiny,    
    14:05 Compiegne (France), 6 Apr 2012        3/1 Safina Blue, 7/2 Graciosilla, 6/1 Belle Blonde, 8/1 Esquinade, 10/1 Coeur De Perle, She's A Rainbow, 12/1 Sucetalanis, 14/1 Lizzy's Sister, 16/1 One More Toy, Mille Secrets, Spirit Of Eivissa, Carla Spirit, Jani's Queen, 20/1 Rashflower, 25/1 Str   
    14:20 Auteuil (France), 6 Apr 2012        11/4 Ozamo, 5/1 Grand Charly, Nikita Du Berlais, 7/1 Nisaro De Cimbre, Quart De Peche, 8/1 Bilyboy, 12/1 Scluzo De L'aube, 16/1 Tito Dela Barriere, Tornade Precieuse, 20/1 Figari Gaugain, 50/1 Royale Boranaise, Exces De Vitesse   
    14:35 FAIRVIEW, 6 Apr 2012        Evens Forest Digger, 9/4 Blaze Of Fire, 7/1 Lord Badger, President Of Pop, 10/1 Act Of Supremeacy, 16/1 Poulnabrone, 25/1 Sergeant At Arms, Shujaa, 50/1 Vandercamander, Varoma, Follow The Light   
    14:40 Compiegne (France), 6 Apr 2012        7/2 Dancing Dynamite, 4/1 Iokastos, 6/1 Rendelsham, 8/1 Combat Zone, Tag's Book, 10/1 Big Hunter, Nid D'amour, Ministre D'etat, 12/1 Boplicity, 14/1 Best Of Order, Salona, Lady Audrey, Alanis, 16/1 Great De Cerisy, Bungur, Marakashi, 25/1 Lord Silvan   
    14:55 Auteuil (France), 6 Apr 2012        2/1 Javirco, 9/4 Abakahn, 5/2 Smashing, 7/1 Viconte Du Noyer, 8/1 Vomero, Pegase Du Rheu, Puma Du Rheu, 14/1 Martalinus, 16/1 Eclair Gris, Blood Cotil   
    15:10 Compiegne (France), 6 Apr 2012        7/2 Grandretour, 5/1 Bromix, 6/1 Question D'or, 8/1 Voyage A Venise, Mythomane, Alma Alta, Spectaculaire, 10/1 Mont Izu, Nijinsky Blood, 16/1 Le Ch'ti, Elegant Dancer, Titus Awarded, Virtuosa, Watergate, Epinay, 20/1 Maiglockchen, Kasrawad, 25/1 Tap    
    15:15 FAIRVIEW, 6 Apr 2012        1/3 Albert Mooney, 8/1 Le Var, Lord Jonathan, Sedge, Flying In, 20/1 Greenacre, 50/1 Tealion, Tribal Party, Tobe's Lass   
    15:25 Auteuil (France), 6 Apr 2012        6/4 Rubi Ball, 4/1 Polar Rochelais, 9/2 Pistolet Rouge, 6/1 Remember Rose, 8/1 Surgeon De Sivola, 10/1 Pibrac, 14/1 Parigny, 16/1 Savigny, Deus Ex Machina   
    15:40 Compiegne (France), 6 Apr 2012        5/1 Waterwild, 13/2 Vespa Blue, 8/1 Ziberto, The Turtle, 10/1 Panirad, Blue Master, Saglawiyah Asil, 12/1 Ushnika, 14/1 Universal Law, Sunfire, 16/1 Bank On Beau, Droit Devant, Enverse, Dejeuner D'enfer, 20/1 Passei, 25/1 Mon Lu, Far Far Away   
    15:40 GREYVILLE (RSA), 6 Apr 2012        Evens Flitter, 4/1 Anne Trulove, 6/1 Where Eagles Dare, Fast Jet, 7/1 Lady Bianca, 10/1 Punto Banco, 20/1 Flirtatious Light, 25/1 Fluent Style, 33/1 Drum Girl, Pashley, 50/1 Classic Sensation   
    15:50 FAIRVIEW, 6 Apr 2012        4/1 Harry Hall, 5/1 Flying Hawk, Count Dumani, 8/1 Air Pocket, African Alliance, 10/1 Seven Network, Black Thunder, 14/1 Wind 'em Up, Jupiter's Jewel, Kirov, 16/1 Chica Bonita, 20/1 Captain Surge, 25/1 Western Star, 33/1 Desert Kite, 50/1 Omega Moon   
    15:55 Auteuil (France), 6 Apr 2012        5/2 Umour Bere, 3/1 Puerto Chico, 5/1 Eudemis, 11/2 Kryptonie, 8/1 Worldeta, 10/1 Boulevard Auteuil, 12/1 Summer Tango, 16/1 Ubi One Kenobi, Silicone Tune   
    16:15 GREYVILLE (RSA), 6 Apr 2012        4/5 Dubai Gina, 3/1 Queen's Command, 4/1 Top Talent, 6/1 Las Ramblas, 20/1 Saltwater Girl   
Post Your Reply
<CTRL+Enter> to submit
Please login to post a reply.

Wonder

Instance ID: 13539
www.betfair.com