[Risolto] [Python] Stranezza nell'ora letta dal codice html
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
[Risolto] [Python] Stranezza nell'ora letta dal codice html
Ciao a tutti.
Sto sperimentando una "stranezza" nello scraping di info da un sito (tutta roba che si può fare, ci tengo a specificarlo data la vastità di quello che si può fare con lo scraping).
In parole povere, leggo il codice html di un sito con mechanize.
Successivamente con BeautifulSoup analizzo la struttura del codice e prendo alcune cose che mi interessano.
Tutto a posto... tranne che per l'ora.
Cambia tutte le ore lette: rispetto all'ora che compare nel codice html, mi viene letto come se fosse un'ora indietro. Nel senso che se sul sito mostra le 8 il mio programma la vede come fossero le 7.
Ho fatto l'analisi del codice con gli strumenti di Chromium.
Ho provato a fare il parse del codice html letto da file dopo averlo messo a mano e aver controllato le ore.
Ma niente da fare.
Avrei bisogno di una mano
(e anche di una nuova gamba di legno )
Grazie in anticipo
Sto sperimentando una "stranezza" nello scraping di info da un sito (tutta roba che si può fare, ci tengo a specificarlo data la vastità di quello che si può fare con lo scraping).
In parole povere, leggo il codice html di un sito con mechanize.
Successivamente con BeautifulSoup analizzo la struttura del codice e prendo alcune cose che mi interessano.
Tutto a posto... tranne che per l'ora.
Cambia tutte le ore lette: rispetto all'ora che compare nel codice html, mi viene letto come se fosse un'ora indietro. Nel senso che se sul sito mostra le 8 il mio programma la vede come fossero le 7.
Ho fatto l'analisi del codice con gli strumenti di Chromium.
Ho provato a fare il parse del codice html letto da file dopo averlo messo a mano e aver controllato le ore.
Ma niente da fare.
Avrei bisogno di una mano
(e anche di una nuova gamba di legno )
Grazie in anticipo
Ultima modifica di vaeVictis il domenica 13 gennaio 2019, 10:58, modificato 1 volta in totale.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
- nuzzopippo
- Entusiasta Emergente
- Messaggi: 1624
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: [Python] Stranezza nell'ora letta dal codice html
Anche confessando che non ho la più pallida idea di ciò che Ti serve, la butto li : Fuso orario?
Dico ciò perché mi sono accorto, da molto tempo, che l'orario riportato da questo forum per un mio intervento è spostato di un'ora rispetto all'inserimento.
Forse l'hai considerato già ma personalmente vedrei se mi riesce di trovare i riferimenti GTM adottati nel sistema consultato e compensare ... come ciò possa essere fatto non ne ho idea al momento.
Altra possibilità correlata : non è che i processi con i quali fai lo "scraping" (cu fu?) compensano un orario considerato GTM con le impostazioni del Tuo sistema?
P.S. - letto su wikipedia cosa si definisce scraping
[Edit] con quanto sopra, intendo si verifichi un caso del genere :
... ho dovuto rileggermi la docs prima di poterlo esemplificare
Dico ciò perché mi sono accorto, da molto tempo, che l'orario riportato da questo forum per un mio intervento è spostato di un'ora rispetto all'inserimento.
Forse l'hai considerato già ma personalmente vedrei se mi riesce di trovare i riferimenti GTM adottati nel sistema consultato e compensare ... come ciò possa essere fatto non ne ho idea al momento.
Altra possibilità correlata : non è che i processi con i quali fai lo "scraping" (cu fu?) compensano un orario considerato GTM con le impostazioni del Tuo sistema?
P.S. - letto su wikipedia cosa si definisce scraping
[Edit] con quanto sopra, intendo si verifichi un caso del genere :
Codice: Seleziona tutto
>>> orario = datetime.datetime.now().time()
>>> orarioutc = datetime.datetime.utcnow().time()
>>> print(orario, orarioutc)
08:23:23.339861 07:24:03.112657
>>>
Fatti non foste a viver come bruti ...
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: [Python] Stranezza nell'ora letta dal codice html
Appena ho un attimo scendo in cambusa e ti posto un esempio di codice.
(comunque ti avevo capito anche senza il p.s. )
edit: a pensarci meglio, non posso postare il codice perché dovreste installare BeautifulSoup per poterlo far girare
(comunque ti avevo capito anche senza il p.s. )
edit: a pensarci meglio, non posso postare il codice perché dovreste installare BeautifulSoup per poterlo far girare
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
- nuzzopippo
- Entusiasta Emergente
- Messaggi: 1624
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: [Python] Stranezza nell'ora letta dal codice html
beh ... anche se lanciare un test aiuta, la logica è logica e c'è speranza la docs possa dare indicazioni ... ammesso di riuscire ad individuare un probabile punto critico.vaeVictis [url=https://forum.ubuntu-it.org/viewtopic.php?p=5106567#p5106567][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:...edit: a pensarci meglio, non posso postare il codice perché dovreste installare BeautifulSoup per poterlo far girare
Fatti non foste a viver come bruti ...
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: [Python] Stranezza nell'ora letta dal codice html
Allora, ho ridotto molto il codice al fine di stampare a schermo solo la data e il nome dell'evento (avviando il programma si capisce che intendo).
Per avviarlo serve installare due pacchetti:
Il codice è:
Confrontando quello che esce con le righe visualizzate sul browser aprendo il link di cui faccio lo scraping (che è nella variabile URL_PAGE).
Se hai voglia di lanciarlo e capire che succede... io ci sto diventando stupido.
Per avviarlo serve installare due pacchetti:
Codice: Seleziona tutto
sudo apt-get install python-bs4
sudo apt-get install python-mechanize
Codice: Seleziona tutto
from __future__ import print_function
from bs4 import BeautifulSoup
import regex as re
import mechanize
from datetime import datetime
URL_PAGE = 'https://www.myfxbook.com/forex-economic-calendar'
# recupero codice html
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
html_content = br.open(URL_PAGE).read()
# preparazione della zuppa
soup = BeautifulSoup(html_content, "html.parser")
#regex compilate per l'estrazione dei dati di interesse
#dal singolo evento (estratto con la prima regex)
cal_row_re = re.compile(r'^calRow.*')
date_re = re.compile(r'\w+\s?\d+:\d+') # <-- data
CalEvents = soup.find_all(id=cal_row_re)
for singleEvent in CalEvents:
date = singleEvent.find(text=date_re).strip()
eventName = singleEvent.find(class_='noUnderline').get_text().strip()
print(date, eventName, sep = ';')
Se hai voglia di lanciarlo e capire che succede... io ci sto diventando stupido.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
- nuzzopippo
- Entusiasta Emergente
- Messaggi: 1624
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: [Python] Stranezza nell'ora letta dal codice html
uhmm ... il "senso" del codice si capisce ma c'è di roba da "leggere" prima di potermi fare un'idea attendibile, mai fatto operazioni del genere in alcun linguaggio e mai utilizzato quelle librerie.
Spero nel fine settimana di riuscire a prepararmi un virtualenv e fare una prova, giusto per capire cosa esce.
Spero nel fine settimana di riuscire a prepararmi un virtualenv e fare una prova, giusto per capire cosa esce.
Fatti non foste a viver come bruti ...
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: [Python] Stranezza nell'ora letta dal codice html
Aspetta, che ti posto un esempio più semplice con lettura di un codice HTML ridotto e da file testuale
edit:
nel mentre io sto per impazzire appresso a questa stranezza.
È proprio strano. Nel codice html leggo una cosa e nel parsing un'altra
edit:
nel mentre io sto per impazzire appresso a questa stranezza.
È proprio strano. Nel codice html leggo una cosa e nel parsing un'altra
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
- nuzzopippo
- Entusiasta Emergente
- Messaggi: 1624
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: [Python] Stranezza nell'ora letta dal codice html
Ciao, ho guardato il codice della pagina da Te indicata, in particolare ho notato una notevole quantità di javascript.
In ricerche varie fatte per capire come indicare i dati della località di partenza di una richiesta url, mi sono imbattuto in questo post di stackowerflow, in particolare, vi ho letto :
In ricerche varie fatte per capire come indicare i dati della località di partenza di una richiesta url, mi sono imbattuto in questo post di stackowerflow, in particolare, vi ho letto :
ne sono tutt'altro che certo ma, se ho interpretato bene, potrebbe essere proprio la mancata interazione di BeautifulSoup con tali script la possibile fonte dei problemi che riscontri. Comunque ho ritenuto valesse la pena di segnalarti il trafiletto in citazione.The website is probably using JavaScript to render the page which BeautifulSoup doesn't know how to run , you'll need to use something like Selenium to load the page in an actual browser
Fatti non foste a viver come bruti ...
- Sam9999
- Entusiasta Emergente
- Messaggi: 1983
- Iscrizione: lunedì 9 giugno 2014, 8:59
- Desktop: Studio Xfce
- Distribuzione: Ubuntu 20.04 LTS (Focal)
- Località: BO
- Contatti:
Re: [Python] Stranezza nell'ora letta dal codice html
Potrebbe essere collegato al problema di data che si evidenzia anche fra ubuntu e windows in dual boot?
Come risolvere la differenza di orario fra Ubuntu e Windows 10 in dual boot
Come risolvere la differenza di orario fra Ubuntu e Windows 10 in dual boot
-------------
S. @-M.
-------------
S. @-M.
-------------
- nuzzopippo
- Entusiasta Emergente
- Messaggi: 1624
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: [Python] Stranezza nell'ora letta dal codice html
beh ... python distingue l'ora locale di sistema da quella UTC (vedi la mia prima risposta in questo post) ma senza analizzarsi il sorgente delle librerie implicate non credo possa escludersi a priori.Sam9999 [url=https://forum.ubuntu-it.org/viewtopic.php?p=5107322#p5107322][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Potrebbe essere collegato al problema di data che si evidenzia anche fra ubuntu e windows in dual boot?
In ogni caso credo sia improponibile, dal lato "utilizzatore", prevederela modifica delle impostazioni di sistema per una singola applicazione.
Fatti non foste a viver come bruti ...
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: [Python] Stranezza nell'ora letta dal codice html
Ci avevo pensato ma non è cambiato nulla.Sam9999 [url=https://forum.ubuntu-it.org/viewtopic.php?p=5107322#p5107322][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Potrebbe essere collegato al problema di data che si evidenzia anche fra ubuntu e windows in dual boot?
Come risolvere la differenza di orario fra Ubuntu e Windows 10 in dual boot
Ora riprovo a vedere se dipende da questo.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
- nuzzopippo
- Entusiasta Emergente
- Messaggi: 1624
- Iscrizione: giovedì 12 ottobre 2006, 11:34
Re: [Python] Stranezza nell'ora letta dal codice html
Riferisci al javascript?vaeVictis [url=https://forum.ubuntu-it.org/viewtopic.php?p=5107470#p5107470][img]https://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Ora riprovo a vedere se dipende da questo.
Oggi l'ho dedicato all'argomento, picchiandomi con venv ed, alla fine riuscendo a lanciare il tuo script, l'output è stato esattamente come lo hai segnalato, spostato di un'ora.
In particolare, la pagina di output era puntata al 14 p.v. ed il primo valore partiva dalle ore 1:00 ... i valori c'erano tutti, spostati di un'ora ed in più, c'era il primo valore del 15, che aveva ora 0:50.
Tale situazione mi ha pensare che la pagina rilevata sia completa ed elaborata per la data ricevuta ... che credo sia nessuna,
Ho concentrato i miei tentativi su mechanize ed è da stamattina che sto cercando di trovare il modo di inviare la data locale o l'ofset con UTC senza cavare un ragno dal buco, in particolare mi sono concentrato su cookies ed header, senza combinare nulla, non ho reperito documentazione in merito e da quella di mechanize non mi è riuscito di capire se e come si possa fare.
Nel caso riesca a combinare qualcosa, aggiornerò
Fatti non foste a viver come bruti ...
- vaeVictis
- Imperturbabile Insigne
- Messaggi: 4703
- Iscrizione: venerdì 27 luglio 2012, 17:58
- Desktop: Gnome
- Distribuzione: Ubuntu 20.04 64bit
Re: [Python] Stranezza nell'ora letta dal codice html
Ho risolto lasciando perdere mechanize e usando selenium.
È un simulatore di browseer. Faccio il login così c'è la mia time zone e poi mi scarico il csv senza fare il parsing. Mi sa anche che ho cambiato pure il sito
Grazie del supporto. Metto risolto ma se vuoi postare quanto riesci a fare sei il benvenuto e leggo con piacere.
È un simulatore di browseer. Faccio il login così c'è la mia time zone e poi mi scarico il csv senza fare il parsing. Mi sa anche che ho cambiato pure il sito
Grazie del supporto. Metto risolto ma se vuoi postare quanto riesci a fare sei il benvenuto e leggo con piacere.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 11 ospiti