Riporto il codice sorgente di un parser di prova che legge i feed rss dai siti Sisal e costruisce due array (sono due funzioni)
contenenti data, numero concorso, numeri vincenti (per entrambi) numero superstar e jolly (per superenalotto) e numerone (per winforlife)
Per coerenza con lo stile professato dal blogs (xp programming) non ho usato regexp ne tecniche complesse (ne probabilmente corrette)... solo mid, instr e replace
I feed non vengono aggiornati immediatamente dopo l'estrazione ma circa 15 minuti dopo. Questo codice può essere usato direttamente in asp.net... magari può servire a qualcuno. (io lo uso sul
portale del mio paese per mostrare i dati delle estrazioni nella home). Ho cercato su sisal e non ho trovato divieti nell'utilizzo dei feed su altri siti ma, nel caso sia vietato, fatemelo sapere che tolgo tutto :D
Module Module1
Sub Main()
Dim z As System.Net.WebClient = New System.Net.WebClient()
Dim SuperEna() As String = SuperEnalotto_Parse(z)
Dim wForLife() As String = WinForLife_Parse(z)
z.Dispose() : z = Nothing
End Sub
Private Function SuperEnalotto_Parse(ByRef z As System.Net.WebClient) As String()
Dim superEna As String = z.DownloadString("http://www.sisal.it/Feed/pubblico/servlet/feed?nome=jackpotSestinaSuperEnalotto")
Dim SuperEnalotto(9) As String
'# legge il numero del concorso dal feed
Dim nConcorso As String
Dim combo As String
nConcorso = Mid(superEna, InStr(superEna, "CombVinc_boxTitolo"), Len(superEna)).Split(";")(3)
nConcorso = Replace(nConcorso, "<", "")
SuperEnalotto(9) = nConcorso
'# legge data concorso
nConcorso = Mid(superEna, InStr(superEna, "CombVinc_boxDate"), Len(superEna)).Split(";")(3)
nConcorso = Replace(nConcorso, "<", "")
SuperEnalotto(8) = Replace(nConcorso, "ì", "i")
'# legge la combinazione vincente dal feed
combo = Mid(superEna, InStr(superEna, "CombVinc_boxNum1") - 1, Len(superEna))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(5)
combo = Replace(combo, "<", "")
SuperEnalotto(0) = combo
'#estratto 2
combo = Mid(superEna, InStr(superEna, "CombVinc_boxNum2") - 1, Len(superEna))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
SuperEnalotto(1) = combo
'#estratto 3
combo = Mid(superEna, InStr(superEna, "CombVinc_boxNum3") - 1, Len(superEna))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
SuperEnalotto(2) = combo
'#estratto 4
combo = Mid(superEna, InStr(superEna, "CombVinc_boxNum4") - 1, Len(superEna))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
SuperEnalotto(3) = combo
'#estratto 5
combo = Mid(superEna, InStr(superEna, "CombVinc_boxNum5") - 1, Len(superEna))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
SuperEnalotto(4) = combo
'#estratto 6
combo = Mid(superEna, InStr(superEna, "CombVinc_boxNum6") - 1, Len(superEna))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
SuperEnalotto(5) = combo
'#estratto 7
combo = Mid(superEna, InStr(superEna, "CombVinc_boxJolly") - 1, Len(superEna))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(5)
combo = Replace(combo, "<", "")
SuperEnalotto(6) = combo
'#estratto 8
combo = Mid(superEna, InStr(superEna, "CombVinc_boxSuperStar") - 1, Len(superEna))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(5)
combo = Replace(combo, "<", "")
SuperEnalotto(7) = combo
Return SuperEnalotto
End Function
Private Function WinForLife_Parse(ByRef z As System.Net.WebClient) As String()
Dim wforlife As String = z.DownloadString("http://www.sisal.it/Feed/pubblico/servlet/feed?nome=WinForLife")
Dim WinForLife(12) As String
'# legge il numero del concorso dal feed
Dim nConcorso As String
Dim combo As String
nConcorso = Mid(wforlife, InStr(wforlife, "CombVinc_boxTitolo"), Len(wforlife)).Split(";")(3)
nConcorso = Replace(nConcorso, "<", "")
WinForLife(12) = nConcorso
'# legge data concorso
nConcorso = Mid(wforlife, InStr(wforlife, "CombVinc_boxDate"), Len(wforlife)).Split(";")(3)
nConcorso = Replace(nConcorso, "<", "")
WinForLife(11) = Replace(nConcorso, "ì", "i")
'# legge la combinazione vincente dal feed
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxNum1") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(5)
combo = Replace(combo, "<", "")
WinForLife(0) = combo
'#estratto 2
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxNum2") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
WinForLife(1) = combo
'#estratto 3
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxNum3") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
WinForLife(2) = combo
'#estratto 4
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxNum4") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
WinForLife(3) = combo
'#estratto 5
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxNum5") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
WinForLife(4) = combo
'#estratto 6
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxNum6") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
WinForLife(5) = combo
'#estratto 7
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxNum7") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
WinForLife(6) = combo
'#estratto 8
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxNum8") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
WinForLife(7) = combo
'#estratto 9
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxNum9") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
WinForLife(8) = combo
'#estratto 10
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxNum10") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(3)
combo = Replace(combo, "<", "")
WinForLife(9) = combo
'# numerone
combo = Mid(wforlife, InStr(wforlife, "CombVinc_boxJolly") - 1, Len(wforlife))
combo = Mid(combo, 1, InStr(combo, "/b") - 1)
combo = combo.Split(";")(5)
combo = Replace(combo, "<", "")
WinForLife(10) = combo
Return WinForLife
End Function
End Module
Chiaro che se cambiano il formato del feed va cambiato tutto :D