xiaodaigh / TableScraper.jl

Scrape WELL-FORMED tables from webpages
MIT License
29 stars 0 forks source link

Empty `DataFrame` from `TableScraper.Table` #3

Closed pitmonticone closed 3 years ago

pitmonticone commented 3 years ago

Hi,

I'm trying to scrape the table embedded in this website with the following code:

# Import Modules 
using DataFrames, HTTP, TableScraper

# Scrape Table 
table = scrape_tables("https://www.agenas.gov.it/covid19/web/index.php?r=site%2Fprovvedimento&q=010")[1]
-element Vector{TableScraper.Table}:
 TableScraper.Table(Any[["02/03/2021", "Decreto del Presidente della Giunta Regionale 2 marzo 2021, n. 30 - BU08S10 02/03/2021", "Disposizioni attuative per la prevenzione e gestione dell’emergenza epidemiologica da COVID-19. Ordinanza ai sensi dell’art. 32, comma 3, della legge 23 dicembre 1978, n. 833, in materia di igiene e sanità pubblica. Ulteriori misure in relazione al territorio dei Comuni di Bagnolo Piemonte, Barge, Crissolo, Envie, Gambasca, Martiniana Po, Oncino, Ostana, Paesana, Revello, Rifreddo, Sanfront, nella Provincia di Cuneo, e Bricherasio, Scalenghe, nella Città Metropolitana di Torino.", "Ordina misure attuative per la prevenzione e gestione dell’emergenza epidemiologica da COVID-19", "Decreto del Presidente della Giunta Regionale 2 marzo 2021, n. 30 - BU08S10 02/03/2021", ""], ["28/02/2021", "Decreto del Presidente della Giunta Regionale 28 febbraio 2021, n. 29 - BU08S9 28/02/2021", "Disposizioni attuative per la prevenzione e gestione dell’emergenza epidemiologica da COVID-19. Ordinanza ai sensi dell’art. 32, comma 3, della legge 23 dicembre 1978, n. 833, in materia di igiene e sanità pubblica.", "Ordina misure attuative per la prevenzione e gestione dell’emergenza epidemiologica da COVID-19", "Decreto del Presidente della Giunta Regionale 28 febbraio 2021, n. 29 - BU08S9 28/02/2021", ""], ["26/02/2021", "Direzione della Giunta regionale - BU08S7 26/02/2021", "Avviso di selezione pubblica per il conferimento dell’incarico di Direttore della direzione A1400A “Sanità e welfare”.", "rende noto che è indetto, ai sensi degli artt. 24, 24 bis e 25 della l.r. 28 luglio 2008, n. 23 e s.m.i., dei relativi criteri approvati con DGR n. 29-9649 del 22.9.2008 così come in ultimo modificata con DGR 14- 908 del 19.1.2015, ai sensi del D.Lgs. 39/2013 e s.m.i., dell’art. 11, comma 3 del D.L. 90/2014 convertito con modificazioni dalla L. 114/2014, della DGR 8-1327 del 8.05.2020, un avviso di selezione pubblica per il conferimento dell’incarico di direttore della direzione A1400A “Sanità e welfare”, con sede di lavoro in Torino.", "Direzione della Giunta regionale - BU08S7 26/02/2021", ""], ["26/02/2021", "Decreto del Presidente della Giunta regionale 26 febbraio 2021, n. 28 - BU07S8 26/02/2021", "Disposizioni attuative per la prevenzione e gestione dell’emergenza epidemiologica da COVID-19. Ordinanza ai sensi dell’art. 32, comma 3, della legge 23 dicembre 1978, n. 833, in materia di igiene e sanità pubblica. Ulteriori misure in relazione al territorio dei Comuni di Craveggia, Druogno, Malesco, Re, Santa Maria Maggiore, Toceno e Villette nella provincia del Verbano Cusio Ossola e Cavour nella Città Metropolitana di Torino.", "Ordina misure attuative per la prevenzione e gestione dell’emergenza epidemiologica da COVID-19", "Decreto del Presidente della Giunta regionale 26 febbraio 2021, n. 28 - BU07S8 26/02/2021", ""], ["25/02/2021", "D.D. 25 febbraio 2021, n. 263 BU9 04/03/2021", "Nuove modalità di gestione del servizio di erogazione agli assistiti di ausili per incontinenza da parte dei punti territoriali.", "DETERMINA • di approvare, ai sensi della DGR n. 14-2361 del 27.11.2020, per le motivazioni formulate in premessa, il documento recante la procedura attuativa delle nuove modalità di erogazione degli ausili per incontinenza da parte dei punti erogatori territoriali, allegato quale parte integrante e sostanziale al presente atto.", "D.D. 25 febbraio 2021, n. 263 BU9 04/03/2021", ""], ["25/02/2021", "D.D. 25 febbraio 2021, n. 264 - BU9S1 04/03/2021", "Approvazione e pubblicazione della graduatoria provvisoria afferente la zona carente di assistenza pediatrica individuata, ai sensi dell'art. 33, così integralmente sostituito dall'Art. 4 dell'ACN/2018 e dell'art. 7, comma 2, dell'ACN/20210. dall'A.S.L. CN1 nell'ambito del Distretto Sud Ovest, in deroga alle scadenze temporali previste dalla vigente normativa di settore.", "determina per le motivazioni espresse in narrativa e qui integralmente riportate, - di approvare, a seguito della disamina istruttoria effettuata nei confronti di tutte le istanze pervenute entro il termine previsto al Settore Sistemi organizzativi e risorse umane del SSR, la graduatoria provvisoria dei Medici pediatri aspiranti al conferimento dell'incarico definitivo di Pediatria di libera scelta della zona carente di assistenza pediatrica individuata, in deroga alle scadenze temporali prestabilite dalla vigente normativa di settore, dall'A.S.L. CN1 nell'ambito territoriale afferente il Distretto Sud Ovest, di cui all’Allegato A) titolato “Art. 7, comma 2, dell'ACN/2010 - GRADUATORIA PROVVISORIA - A.S.L. CN1 - Zona carente di assistenza pediatrica. Anno 2021\", parte integrante e sostanziale della presente determinazione, al fine di assicurare, atteso il periodo emergenziale determinato dalla pandemia COVID-19, un elevato mantenimento dell'assistenza pediatrica e garantire la libera scelta del cittadino;", "D.D. 25 febbraio 2021, n. 264 - BU9S1 04/03/2021", ""], ["24/02/2021", "D.D. 24 febbraio 2021, n. 261 -  BU9 04/03/2021", "DGR del 19 febbraio 2021 n. 11 - 2886 “Accordo Integrativo Regionale per la medicina generale per la partecipazione alla campagna per la somministrazione del vaccino ANTI-SARS-COV-2, sottoscritto in data 19 gennaio 2021, dalla Regione Piemonte e le OOSS MMG recepito con DGR n. 7 - 2813 del 29 gennaio 2021. Attivazione della campagna vaccinale ANTI-SARS-COV2 da svolgersi dagli MMG in favore degli ultraottantenni.” .Accertamento di euro 4.759.370 sul cap. 16575/21 - . Impegno di Euro 4.759.370 sul cap. 157318/21 a favore delle ASL del Piemonte per l’attività di somministrazione del vaccino ANTI-SARS-COV2 da parte dei Medici di Medicina Generale in favore dei soggetti aventi età superiore agli anni 80", "determina - di accertare la somma di Euro 4.759.370 sul cap 16575/2021 del bilancio gestionale provvisorio 2021 la cui transazione elementare è rappresentata nell’allegato “Appendice A – Elenco Registrazioni contabili” parte integrante e sostanziale del presente provvedimento, codice versante 220175 Ministero dell’Economia e delle Finanze – Dipartimento della Ragioneria Generale dello Stato – IGEPA ; - di impegnare la somma di Euro 4.759.370, a favore delle Aziende Sanitarie Locali del Piemonte, sul capitolo 157318/2021 del bilancio gestionale provvisorio 202,1 la cui transazione elementare è rappresentata nell’allegato “Appendice A – Elenco Registrazioni contabili” parte integrante e sostanziale del presente provvedimento, per il finanziamento dell’attività di somministrazione del vaccino ANTI-SARS-COV-2 da parte dei MMG in favore dei soggetti aventi età superiore agli anni 80 in attuazione della DGR del 19 febbraio 2021 n. 11 – 2886; - di stabilire che con successivo provvedimento il suddetto importo verrà ripartito tra le Aziende Sanitarie Locali del Piemonte sulla base dell’effettiva rendicontazione delle prestazioni effettuate; - di dare atto che trattasi di spese non soggette agli obblighi di tracciabilità previsti dalla legge 136/2010 e s.m.i", "D.D. 24 febbraio 2021, n. 261 -  BU9 04/03/2021", ""], ["24/02/2021", "D.D. 24 febbraio 2021, n. 259 -  BU8S5 25/02/2021", "integrazione della DD n. 1715/A1406B/2020 del 21 dicembre 2020 recante ad oggetto DGR n. 3-2299 del 16 novembre 2020 avente ad oggetto: “Recepimento dell’Accordo Integrativo Regionale per il rafforzamento delle attività territoriali di diagnostica di primo livello e di prevenzione della trasmissione di SARS-COV.2, sottoscritto in data 12 novembre 2020, tra la Regione Piemonte e l’ OS FIMMG Piemonte”. Subimpegno della somma complessiva di euro 251.052,00 sul cap. 157319/20 (impegno 10972/2020) a favore delle AASSLL Città di Torino, TO3, TO4, TO5, VC, BI, VCO, CN1, CN2, AT e AL per il finanziamento del fondo ex art. 46 ACN MMG del 23 marzo 2005 e s.m.i. finalizzato alla retribuzione dell’indennità di personale infermieristico di cui all’art 59, comma 1 lettera B, menzionato ACN, come previsto dall’art.1, comma 9 del decreto legge del 19 maggio 2020, n. 34, convertito nella legge del 17 luglio 2020, n. 77.”", "determina per le motivazioni espresse in premessa, • di subimpegnare la somma complessiva di € 14.712, calcolata in base al numero di assistiti in carico ai medici di assistenza primaria, a valere sul capitolo 157319/20 (impegno 10972/20), nella misura e a favore dell’ ASL TO3 e dell’ ASL CN1, come indicato nell'Allegato 1), parte integrante e sostanziale del presente provvedimento, per altre spese (art. 1, commi da 2 a 9) individuate dalla legge 17 luglio 2020 n. 77, in attuazione della DGR 37-2474 del 4 dicembre 2020 (Allegato A, colonna A6) -in quanto le istanze presentate dai medici sovraindicati, in base all’ordine cronologico di arrivo, avrebbero dovute essere autorizzate già alla data del 21 dicembre 2020; • di liquidare, a titolo di acconto, a favore delle menzionate Aziende l’importo di € 7.356, pari al 50% del sovramenzionata somma, ad approvazione del presente provvedimento e il restante 50% a seguito di rendicontazione da parte delle medesime delle somme effettivamente corrisposte ai medici; • di dare atto che, rispetto a quanto attribuito con la DGR 3-2299 del 16 novembre 2020 residuano ancora € 219.184 da ripartire alle AASSLL mediante atto successivo; • di dare atto che l’importo di € 3.540 (885 assistiti x 4 euro) relativo alla spesa per l’istanza del Dott. Malandrino, per errore materiale, inserita nel prospetto in allegato alla DD in oggetto, verrà conteggiato in detrazione al momento della corresponsione dell’importo a saldo a seguito di rendicontazione da parte dell’ASL Città di Torino.", "D.D. 24 febbraio 2021, n. 259 -  BU8S5 25/02/2021", ""], ["24/02/2021", "D.D. 24 febbraio 2021, n. 257 -  BU8S5 25/02/2021", "Accreditamento provider di formazione anno 2021 - rinnovo accreditamento standard ai provider: ''LTR Srl'' - ''Inforcoop Ecipa Piemonte S.c.r.l.'' - ''Fondazione Orizzonte Speranza Onlus''", "determina • di approvare, per i motivi di cui in narrativa, il rinnovo dell’accreditamento standard, a decorrere dall’adozione del presente provvedimento, ai seguenti provider: - “LTR Srl” - “Inforcoop Ecipa Piemonte S.c.r.l.” - “Fondazione Orizzonte Speranza Onlus” • di dare atto che il presente provvedimento non comporta oneri aggiuntivi a carico della Regione Piemonte", "D.D. 24 febbraio 2021, n. 257 -  BU8S5 25/02/2021", ""], ["23/02/2021", "Decreto del Presidente della Giunta Regionale 23 febbraio 2021, n. 26", "Disposizioni attuative per la prevenzione e gestione dell’emergenza epidemiologica da COVID-19. Ordinanza ai sensi dell’art. 32, comma 3, della legge 23 dicembre 1978, n. 833, in materia di igiene e sanità pubblica. Segnalazioni dovute da chi fa rientro dall’estero sul territorio della Regione Piemonte.", "ORDINA che, ai sensi dell’art. 32, comma 3, della legge 23 dicembre 1978, n. 833, in materia di igiene e sanità pubblica, e tenuto conto delle misure già disposte con decreti del Presidente del Consiglio dei Ministri, nel territorio regionale si adottino le seguenti misure per la prevenzione e gestione dell’emergenza epidemiologica da COVID-19", "Decreto del Presidente della Giunta Regionale 23 febbraio 2021, n. 26", ""]  …  ["08/05/2020", "DGR n. 30-1347 (BU n. 26 S1 del 25/06/2020)", "Emergenza COVID-19. Autorizzazione alla stipula del Protocollo d’intesa fra Regione Piemonte – Direzione Sanità e Welfare, Emergency ONG Onlus e Confindustria Piemonte per l’attuazione di un progetto di collaborazione a supporto delle strutture socio-sanitarie e socio assistenziali di tipo residenziale piemontesi", "Autorizzazione alla stipula del Protocollo d’intesa fra Regione Piemonte – Direzione Sanità e Welfare - Emergency ONG onlus e Confindustria Piemonte per l’attuazione di un progetto finalizzato, nell’ambito della gestione dell’emergenza COVID-19, a fornire, mediante l’attivazione di team di personale sanitario e logistico di Emergency, un supporto alle residenze socio sanitarie ed alle strutture socio assistenziali di tipo residenziale piemontesi, affiancandole nella gestione delle misure di prevenzione e contrasto al diffondersi del contagio", "DGR n. 30-1347 (BU n. 26 S1 del 25/06/2020)", ""], ["07/05/2020", "DD n. 418 (BU n. 22 del 28/05/2020)", "Emergenza regionale Covid-19 Attivazione Numero verde e messa in sicurezza Centrali operative di Emergenza. Approvazione schema di Atto aggiuntivo contratto Rep 374 del 26.11.2014 (CIG 53081274F8) Accertamento sul cap. 16575/20 di euro 314.088,39 e impegno sul cap. 131900/20 di euro 314.088,39", "Attivazione del Servizio Regionale del numero verde 800192020- Emergenza Corona Virus.Approvazione dello schema di atto aggiuntivo al contratto Contratto Rep 374 del 26/11/2014 (CIG53081274F8) al fine dell’ attivazione del Numero Verde 800192020 per l’Emergenza regionale Coronavirus e per gli interventi sulle Centrali Operative e la messa in sicurezza delle stesse.Impegno della somma di euro 314.088,39 a favore di Società Telecom Italia S.p.a codice beneficiario 148652 con sede legale in Milano via Negri,1 . C.F. / P.IVA00488410010 sul capitolo 131900/2020 del bilancio gestionale 2020/2022 annualità 2020,per il pagamento delle fatture relative ai servizi di cui al presente schema di atto aggiuntivo Contratto Rep 374 del 26.11.2014(CIG 53081274F8), per l’emergenza regionale (COVID-19) per l'anno 2020.", "DD n. 418 (BU n. 22 del 28/05/2020)", ""], ["04/05/2020", "DD n. 402 (BU n. 22 del 28/05/2020)", "Emergenza Coronavirus COVID-19- Supporto specialistico operativo all'Unità di crisi- Integrazione alla configurazione tecnico-economica per l'anno 2020 dei Servizi IT in continuità di gestione a favore della Direzione Sanità e Welfare, già affidati a CSI-Piemonte con DD 882/2019. Accertamento della somma di euro 478.849,00 sul capitolo di entrata 16575/2020. Impegno di euro 478.849,00 sul capitolo di spesa", "Impegno della somma di euro 478.849,00 a favore di CSI Piemonte codice beneficiario 12655 con sede legale in C.so Unione Sovietica, 216 , Torino ( C.F. - P.I. 01995120019) sul capitolo 134996/2020 del bilancio finanziario gestionale 2020/2022 - annualità 2020- per il supporto specialistico operativo all'Unità di crisi per il contrasto al Coronavirus (COVID-19) per l'anno 2020 - Integrazione alla Configurazione tecnico-economica dei Servizi IT per la Direzione Sanità e Welfare-CTE 2020.", "DD n. 402 (BU n. 22 del 28/05/2020)", ""], ["02/05/2020", "DPGR n. 50", "Disposizioni attuative per la prevenzione e gestione dell'emergenza epidemiologica da COVID-19. Ordinanza ai sensi dell'art. 32, comma 3, della legge 23 dicembre 1978, n. 833 in msteria di igiene e sanità pubblica", "Obblighi per le strutture sanitarie:*monitoraggio clinico degli operatori sanitari con rilevazione della temperatura corporea prima del turno di lavoro;*divieto di ingresso ai visitatori in tutte le strutture pubbliche, private, convenzionate ed equiparate del SSN e altresì nelle strutture socio assistenziali di cui alla lettera x) del DPCM del 26 aprile 2020.", "DPGR n. 50", ""], ["30/04/2020", "DD n. 396 (BU n.19 del 07/05/2020)", "Avviso di pubblicazione degli incarichi settimanali vacanti, a tempo indeterminato, nel servizio di Emergenza Sanitaria Territoriale. Rilevazione al 1° marzo 2020.", "Pubblicazione degli incarichi settimanali vacanti a tempo indeterminato nel servizio di Emergenza sanitaria territoriale di cui all’Allegato 1) “ Elenco degli incarichi settimanali vacanti nel servizio di Emergenza Sanitaria Territoriale” ed all’Allegato 2) “Modalita’ per il conferimento di incarico a tempoindeterminato nell’ambito del servizio di Emergenza Sanitaria Territoriale”, parti integranti e sostanziale della presente determinazione, nonché alla luce di quanto previsto dalla Delibera del Consiglio dei Ministri 31 gennaio 2020 e dall’art.12 del D.L. 17 marzo 2020 n. 18", "DD n. 396 (BU n.19 del 07/05/2020)", ""], ["30/04/2020", "DGR n. 32-1309 (BU n. 21 SO1 del 21/05/2020) ", "Emergenza COVID-19. Costituzione di un gruppo di lavoro di esperti a supporto dell’Assessore alla Sanità per valutazioni e formulazione di proposte finalizzate al miglioramento dell’assistenza ospedaliera.", "Costituzione di un gruppo di lavoro di esperti a supporto dell’Assessore alla Sanità per valutazioni e formulazione di proposte finalizzate al miglioramento dell’assistenza ospedaliera;E' assegnato a tale gruppo di lavoro l’obiettivo di:- analizzare, in termini di prestazioni rese, la rete dell’assistenza ospedaliera degli ultimi anni;- analizzare il contesto attuale dell’assistenza ospedaliera;- effettuare comparazioni con l’esperienza di altre Regioni italiane;- formulare proposte per l’organizzazione del sistema sanitario con particolare attenzione all’area ospedaliera;- valutare il livello di integrazione ospedale-territorio e formulare proposte atte a migliorarla in collaborazione con il gruppo di lavoro costituito ex DGR n. 1-1252 del 20.04.2020.", "DGR n. 32-1309 (BU n. 21 SO1 del 21/05/2020) ", ""], ["07/04/2020", "DPGR n.40", "Modifica al punto 14 del decreto n.39 del 6 aprile 2020", "Divieto di spostamento in entrata o in uscita dalla regione; le strutture sanitarie devono effettuare un monitoraggio clinico degli operatori sanitari; ai soggetti con sintomatologia da influenza si raccomanda di contattare il MMG;", "DPGR n.40", ""], ["06/04/2020", "DPGR n.39", "Ulteriori misure per la prevenzione e gestione dell’emergenza epidemiologica da COVID-2019", "Divieto di spostamento in entrata o in uscita dalla regione; le strutture sanitarie devono effettuare un monitoraggio clinico degli operatori sanitari; ai soggetti con sintomatologia da influenza si raccomanda di contattare il MMG;", "DPGR n.39", ""], ["06/03/2020", "DPGR n.27", "Unita' di Crisi U.C.R. istituita con D.P.G.R. n. 20 del 22 febbraio 2020. Disposizioni organizzative integrative per la gestione dell’emergenza epidemiologica in Piemonte da Coronavirus COVID 19.", "l’Unità di Crisi opera 7 giorni su 7, 24 ore su 24 - E’ garantita dall’Unità di Crisi la presenza continuativa del Comitato Operativo, nell’ambito dei nominativi forniti dalle Direzioni di Protezione Civile e Sanità. ", "DPGR n.27", ""], ["22/02/2020", "DPGR n. 20", "Coronavirus COVID 19: attivazione dell'Unita' di Crisi U.C.R. ai sensi del Decreto del Presidente della Giunta Regionale 18 ottobre 2004, n. 8/R", "Attivazione dell’Unità di Crisi Regionale – U.C.R., in modalità operativa h24, convocando i responsabili del Sistema Sanitario Regionale Piemonte 118 e il personale della protezione civile della Regione Piemonte presso la sede della Protezione Civile Regionale in corso Marche, 79 a Torino; (...)", "DPGR n. 20", ""]], Any[])

Unfortunately it doesn't seem to be able to correctly covert a TableScraper.Table to a DataFrame object:

# Convert TableScraper.Table to DataFrame
data = DataFrame(table)
0×0 DataFrame

What am I doing wrong here? Do you know a way to fix this problem?

Thank you very much for the development and maintenance of this useful package!

ClaudMor commented 3 years ago

Hello @pitmonticone ,

By reading the Table methods implementations, I found one may convert your Table object in a DataFrame this way:

# Import Modules 
using DataFrames, HTTP, TableScraper

# Scrape Table 
table = scrape_tables("https://www.agenas.gov.it/covid19/web/index.php?r=site%2Fprovvedimento&q=010")[1]

# check length of table (it will be the number of rows of the resulting DataFrame)
length(table)

# get number of necessary columns
length(Tables.getcolumn(table,1)[1])

# construct output dataframe 
df = DataFrame(date = String[], document = String[], content_1 = String[], content_2 = String[], dpgr_number = String[], void = String[]  )

# fill the dataframe
for vect in Tables.getcolumn(table,1)
    push!(df, vect)
end

# print result
df

Another way you could do it is by appending columns instead of rows.

Note that I am not a developer of this package, so this may not be the optimal solution.

xiaodaigh commented 3 years ago

@ClaudMor Thanks.

@pitmonticone I've made a fix in the code. It should work now. In the latest version. Should be available in a few hours.