Luigi Di Biasi


XP Programming Style
Sondaggio
Argomento Spider e WebCrawler

Interessante
Non interessante

Leggere i feed rss Winforlife e Superenalotto

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, "&lt", "")
        SuperEnalotto(9) = nConcorso

        '# legge data concorso
        nConcorso = Mid(superEna, InStr(superEna, "CombVinc_boxDate"), Len(superEna)).Split(";")(3)
        nConcorso = Replace(nConcorso, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        WinForLife(12) = nConcorso

        '# legge data concorso
        nConcorso = Mid(wforlife, InStr(wforlife, "CombVinc_boxDate"), Len(wforlife)).Split(";")(3)
        nConcorso = Replace(nConcorso, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        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, "&lt", "")
        WinForLife(10) = combo


        Return WinForLife


    End Function


End Module


Chiaro che se cambiano il formato del feed va cambiato tutto :D
Categoria: Come fare a ...
lunedì, 11 ott 2010 Ore. 10.33
Statistiche
  • Views Home Page: 27.212
  • Views Posts: 51.082
  • Views Gallerie: 0
  • n° Posts: 41
  • n° Commenti: 33
Archivio Posts
Anno 2012

Anno 2011

Anno 2010

Anno 2009

Anno 2008
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003