Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Copia dati web 2

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Copia dati web 2

Postdi Statix » 19/06/17 08:10

Ciao Anthony47,
nuova richiesta per un altro sito,
da questo Url http://49s.co.uk/uk49s
dovrei scaricare le estrazioni.
le opzioni disponibili sono 3 ,
un click per andare avanti
un click per andare indietro e un
click che visualizza le estrazioni in ordine di uscita.
le estrazioni vengono fatte 2 volte al giorno
Lunchtime ore 14.00
TeaTime ore 17.00
per 365 giorni escluso il Natale.
attualmente faccio tutto manualmente con click e copia e incolla.
in questo caso servirebbe una macro:
che mandi indietro un tot estrazioni (click indietro)
poi faccia un click che visualizzi le estrazioni in ordine di uscita(No ordine dal più piccolo al più grande)
poi memorizza in un range definito le 2 estrazioni con data una sotto l'altra,
faccia un click avanti e memorizza di nuovo i dai e così via fino alla fine (data attuale)qui si ferma.
può capitare che nell'ultima data vi sia una singola estrazione perche la seconda non deve ancora avvenire,
in questo caso deve memorizzarla ugualmente,
spero che sia stato il più chiaro possibile,il tutto si basa su 3 click.
buon lavoro :lol: :lol:
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Sponsor
 

Re: Copia dati web 2

Postdi raimea » 20/06/17 21:59

ciao
un file Excel sul lotto inglese lo puoi trovare qui:

http://www.lelugarine.eu/download/49k/

le estrazioni sono aggiornate fino a gennaio '17
poi io non ho più avuto la possibilità di continuare a giocarlo / aggiornarlo

x didattica vedi se ti puo essere utile

PS
NON preleva le estrazioni automaticamente

ciao
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1286
Iscritto il: 11/02/10 07:33
Località: lago

Re: Copia dati web 2

Postdi Statix » 20/06/17 22:13

Ciao Raimea,
ho scaricato il file, l'archivio delle estrazioni ed aggiornamento ,
già c'è lo da molti anni , io voglio fare qualcosa di mio ex novo,
adesso l'archivio di ............... è protetto in apertura per cui devo stare li a chiedere ogni volta la pass.
io voglio fare un archivio che si aggiorni in automatico per postarlo su un sito hosting personale e da lì aggiornarmi di tutti i miei programmi UK49s (sono circa 30),
con il lotto italiano ho risolto grazie ad Anthony47 , va che una meraviglia.
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Statix » 25/06/17 14:22

mando su, anche se non è corretto,
non vorrei che fosse confusa con il primo Copia dati da Web,
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Anthony47 » 26/06/17 01:56

Ho guardato, ma quel sito non rispecchia gli standard html; ad esempio ci sono piu' elementi dichiarati con lo stesso "ID", mentre lo standard ne imporrebbe 1 solo.
Con un po' di tempo e di pazienza si potrebbe riuscire, ma ultimamente questi ingredienti "mi sono finiti".
Insomma sono pessimista sul fatto che "mi applicherò"...
Avatar utente
Anthony47
Moderatore
 
Post: 17646
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copia dati web 2

Postdi Statix » 30/06/17 15:06

Ciao Anthony47,
con un pò di pazienza potresti fare un doc passo passo su come fare,
credo che molti siano interessati allo scaricamento di dati da siti web.
personalmente vorrei capire come si fà a vedere i vari comandi di un sito.
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Anthony47 » 01/07/17 21:13

Quando voglio raccogliere dati da una pagina web uso le prestazioni della libreria mshtml.tlb.
Per una prima idea puoi partire da
https://msdn.microsoft.com/en-us/librar ... s.85).aspx
e poi
https://msdn.microsoft.com/en-us/librar ... s.85).aspx

Credo di saper usare solo le funzioni basiche, ma spesso mi basta per fare bella figura :D :D se ho tempo e pazienza...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17646
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copia dati web 2

Postdi Statix » 05/09/17 21:32

Ciao Anthony47,
nel sito del 1 post hanno fatto alcune variazioni puo darsi che adesso si potrebbe fare qualcosa, che prima era più complicato,
adesso non mi fa fare neanche la copia dei numeri, con il tasto destro del mouse,
purtroppo è l'unico sito ufficiale dove mettono i numeri in ordine di uscita.
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Statix » 17/09/17 10:32

Ciao a tutti,
riporto il post su,
purtroppo non ne posso fare a meno, mi serve una macro ( se è possibile) per copiare i dati
in un foglio archivio.
grazie
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Statix » 17/09/17 20:08

Stò cercando di capire come prelevare i dati
con il tasto destro ho scelto esamina elemento,
posizionando il cursore sul tasto previous-day
nella finestra accanto riesco a vedere tutti i dati delle 2 estrazioni ,
gli ID dei 2 tasti
<a ID="previous-day"href="#">
<a ID="next-day"href="#">
il terzo serve a selezionare i numeri in ordine di uscita o in ordine dal più piccolo al più grande
<a class ="fn-draw-order"href="#">show in draw order</a/>



Immagine
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Statix » 17/09/17 20:32

Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Statix » 17/09/17 21:18

da quando hanno modificato parte del sito, adesso dovrebbe essere più facile,
una volta impostato manualmente il giorno mese ed anno ed il tipo di ordinamento,
basta far lavorare solo il tasto next-day ,
una volta impostato il tutto, la macro deve prima copiare le 2 estrazioni una sotto l'altra nel range
vedi foto allegata e poi cliccare sul tasto next-day ,
il ciclo si completa all'ultima estrazione,
PS ci sono alcuni giorni che non hanno estrazioni (qui salta) ed alcune solo una.





Immagine
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Anthony47 » 19/09/17 03:23

Mosso a compassione da tanta pacata insistenza ti propongo questa soluzione semiautomatica:
Metti in un "nuovo Modulo standard" del vba il seguente codice:
Codice: Seleziona tutto
Dim IE As Object

Sub ApriSito()

myurl = "http://49s.co.uk/49s/previous-results/"
If IE Is Nothing Then Set IE = CreateObject("InternetExplorer.Application")

'
With IE
    .navigate myurl
    .Visible = True
    Do While .Busy: DoEvents: Loop              'Attesa not busy
    Do While .readyState <> 4: DoEvents: Loop   'Attesa documento
End With

MsgBox ("Ora naviga alle date prescelte e usa la Sub DataColl per raccogliere i numeri")
End Sub

Sub DataColl()
Dim myColl As Object
Dim mArr(1 To 16)
If IE Is Nothing Then Call ApriSito
Set myColl = IE.document.getElementsByClassName("fn-accent-text")
aaa = myColl.Length
mArr(1) = myColl(2).innerText
mArr(9) = myColl(3).innerText

Set myColl = IE.document.getElementsByClassName("fn-outline-ball")

For j = 0 To 1
    For i = 1 To 7
        mArr(i + 1 + j * 8) = myColl(i - 1 + j * 7).getElementsByTagName("div")(0).innerText
    Next i
Next j
If Selection.Column = 2 Then
    Selection.Resize(1, 16) = mArr
    Selection.Offset(1, 0).Select
Else
    Beep
End If
End Sub

Crea poi un Pulsante e associagli la Sub DataColl

Quando sei pronto a importare i dati:
-seleziona una cella della colonna B
-premi il pulsante
In questo modo ti aprira' una sessione InternetExplorer con accesso al sito; naviga manualmente alla data che desideri.
Torna al file Excel; dovresti (solo la prima volta) trovare un messaggio che dice di navigare alla data e poi eseguire la DataColl: conferma il messaggio e dovresti ora trovarti con , sulla riga, l'ora e i numeri della prima estrazione, l'ora e i numeri della seconda estrazione.

Viene selezionata la B successiva; torna su I.E. e naviga alla prossima data; torna su Excel e premi il pulsante.
E cosi' per le estrazioni che ti servono.

Al momento la cosa (forse) funziona solo se ci sono sia le estrazioni Lunch time che Tea time; "forse" domani controllero' cosa succede quando c'e' solo l'estrazione Lunch time e (forse) potro' modificare la macro; altrimenti ti tocca fare il lavoro dopo le 18, o quello che e' il british Tea time

Quando hai finito ricordati di chiudere la sessione IE.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17646
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copia dati web 2

Postdi Statix » 19/09/17 07:13

Ciao Anthony47,
ho avuto qualche problema nel far partire le macro,
il problema è che quando copio la macro dal forum,
alcune righe del codice sono in rosso,
questo è dovuto a degli spazi non visibili,che ho dovuto eliminare,
comunque la macro sembra funzionare ma deve ancora essere perfezionata,
al posto del LunchTime mi da l'ora di estrazione.
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Statix » 19/09/17 07:39

Ciao Anthony47,volevo ringraziarti per quello che fai,
le 2 estrazioni sono messe una di fianco all'altra è possibile metterle una sotto l'altra ?
e al posto dell'orario mettere la data,
volendo far ciclare il tutto bisognerebbe far funzionare il tasto next-day in automatico,
aperto il sito e scelto i parametri
datacoll next-day
datacoll next-day
così fino all'ultima estrazione.
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Anthony47 » 23/09/17 01:02

Non potevo lasciar cadere questo discorso...
Partendo dalla semiautomazione che ti avevo passato ho sviluppato questo nuovo codice (il vecchio puo' essere cancellato):
Codice: Seleziona tutto
Dim IE As Object
Dim myColl As Object, myColl1 As Object, dDate As Date, dDay As Long

Sub Main()
Dim Dest As String, myPDay As Object
Dim zzzDay As Long
'
Dest = "Foglio1"            '<<<< Il Foglio dove sara' creato l'elenco
'
Sheets(Dest).Select
Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Select
On Error Resume Next
IE.Quit
Set IE = Nothing
On Error GoTo 0
Do
Call DataColl
    DoEvents
    If dDate < DateSerial(2007, 6, 1) Then Exit Do     '++++
    Set myPDay = Nothing
    Set myPDay = IE.document.getElementById("previous-day")
    If Not myPDay Is Nothing Then
        myPDay.Click
    Else
        Exit Do
    End If
mytim = Timer
For k = 1 To 100
    Set myColl1 = IE.document.getElementsByClassName("component component-day days-controls-selected")  '("day-number")
    'aaaB = myColl1.Length
    zzzDay = myColl1(0).getElementsByClassName("day-number")(0).innerText
    If zzzDay <> 0 And zzzDay <> dDay Then Exit For
    Debug.Print Format(Timer - mytim, "0.00"), zzzDay, dDay
    myWait (0.01)
   
Next k
'Stop
'    myColl(0).Click
    myWait (0.1)
    Loop
MsgBox ("Completato")
On Error Resume Next
IE.Quit
Set IE = Nothing
On Error GoTo 0
End Sub


Sub ApriSito()

myurl = "http://49s.co.uk/49s/previous-results/"
If IE Is Nothing Then Set IE = CreateObject("InternetExplorer.Application")

'
With IE
    .navigate myurl
    .Visible = True
    Do While .Busy: DoEvents: Loop              'Attesa not busy
    Do While .readyState <> 4: DoEvents: Loop   'Attesa documento
End With

'MsgBox ("Ora naviga alle date prescelte e usa la Sub DataColl per raccogliere i numeri")
End Sub

Sub DataColl()
Dim mArr(1 To 16), dColl As Object

If IE Is Nothing Then Call ApriSito
Set myColl = Nothing
'Set myColl = IE.document.getElementsByClassName("fn-accent-text")
'clen = myColl.Length
Set dColl = IE.document.getElementsByClassName("fn-results-draw-title")
dclen = dColl.Length
Set myColl = IE.document.getElementsByClassName("fn-6-balls-wrapper")
myclen = myColl.Length

Set myColl1 = IE.document.getElementsByClassName("fn-dropdown-select")
'aaaB = myColl1.Length
dDate = DateSerial(myColl1(1).Value, myColl1(0).Value + 1, 1)
Set myColl1 = IE.document.getElementsByClassName("component component-day days-controls-selected")  '("day-number")
'aaaB = myColl1.Length
dDay = myColl1(0).getElementsByClassName("day-number")(0).innerText
dDate = dDate + dDay - 1


For I = 0 To myclen - 1
    With myColl(I)
        Selection.Value = Format(dDate, "yyyy-mm-dd") & "_" & Split(Trim(dColl(I).innerText) & " ", " ", , vbTextCompare)(0)
        Set myColl1 = .getElementsByClassName("fn-ball-wrapper")
        For j = 0 To myColl1.Length - 1
            Selection.Offset(0, 1 + j) = Replace(Replace(myColl1(j).innerText, Chr(10), "", , , vbTextCompare), Chr(13), "", , , vbTextCompare)
        Next j
        Selection.Offset(1, 0).Select
    End With
    Next I
End Sub



Sub myWait(ByVal WSec As Single, Optional ByVal TOut As Single = 10)
'Attende WSec secondi (o il doppio se mezzanotte)
Dim lTim As Single
'
lTim = Timer
Do
    DoEvents
    If Timer > (lTim + WSec) Then Exit Do
    DoEvents
    If Timer < lTim And Timer > WSec Then Exit Do
Loop
End Sub

Mettilo cosi' come te lo passo in un nuovo Modulo standard.

Personalizza la riga marcata <<< col nome del foglio in cui saranno raccolte le estrazioni.
Nella riga marcata +++ ho inserito la data di Giugno 2007 come data di termine della raccolta (nelle prove mi sono fermato molto prima...); eventualmente modifica anche quella riga, se vuoi provare ad andare piu' indietro.

Il foglio indicato per la raccolta non viene azzerato, pero' si comincia a scrivere i dati accodandoli a quanto presente in Colonna B. Suggersico di pulire il foglio prima di cominciare la raccolta, e non e' certo che quanto presente sul foglio venga mantenuto, se B non e' l'ultima cella occupata.

Quando sei pronto devi avviare la Sub Main, poi attendi fiducioso; il progresso della raccolta sara' mostrato sullo schermo.

Teoricamente mentre la macro lavora puoi fare altre cose sul pc, purche' non tocchi la sessione I.E. in cui la macro lavora e non modifichi Excel; ma forse e' meglio non sfidare la sorte.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17646
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Copia dati web 2

Postdi Statix » 23/09/17 07:12

Ciao Anthony47,
ho fatto un po di test, sembra che sia tutto ok, più tardi provo a memorizzarle tutte,
manca ancora una cosa che ti è sfuggito,
c'è ancora un click da abilitare, Show in draw order,
cliccandoci sopra mi da l'estrazioni in ordine di uscita ,
riclicandoci di nuovo mi da i numeri dal più piccolo al più grande,
a me serve quello in ordine di uscita
esempio 34-12-5-23-45-1
in più ci vorrebbe una macro finale che mi sistemi le date ,
2017-09-22_TeaTime
cioè mi separi la data in colonna B 22/09/2017 dal lunchtime o teatime (queste in colonna J
grazie
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Statix » 23/09/17 07:51

ok, memorizzate tutte senza alcun problema,in pochi minuti,
l'estrazioni non avvenute le salta,
direi tutto perfetto come sempre,
manca solo il tipo di ordinamento,
che è molto importante ai fini statistici.
grazie
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Statix » 23/09/17 21:02

Ciao Anthony47,
ci sono ancora 2/3 problemini,
il primo è che non mi copia l'ultima estrazione,
modificando qui
dDate = dDate + dDay - 1 con
dDate = dDate + dDay
mi copia anche l'ultima estrazione,(è giusta la modifica?)

secondo se imposto la data 15/09/2017 mi copia anche quella del 14/09/2017
(per la data ho messo delle variabili tipo A,M,G in modo che dal foglio modifico la data nella macro)

e per finire, terzo le estrazioni
vengono copiate dall'ultima attuale a quelle passate,
in questo caso bisogna copiare prima la TeaTime e poi la LunchTime
esempio
23/09/2017- TeaTime
23/09/2017-LunchTime
22/09/2017-TeaTime
22/09/2017-LunchTime
etc.etc.

secondo me per correggere la copia delle estrazioni +1 -1 bisogna attivare il click dopo quello centrale, posso anche sbagliarmi.
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Copia dati web 2

Postdi Statix » 23/09/17 21:20

il click da attivare è a destra del centrale cioè il 23,
attualmente il click della macro agisce sul 22 ????

Immagine
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1270
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Copia dati web 2":

Dati da web
Autore: Statix
Forum: Applicazioni Office Windows
Risposte: 6

Chi c’è in linea

Visitano il forum: Nessuno e 52 ospiti