sabato 16 marzo 2019

scraping dei documenti pdf dall'Albo Pretorio tipo Maggioli con google sheets

Analizzando con Ispeziona Elemento una pagina d'arrivo della comunicazione dell'Albo Pretorio, si osservano le seguenti caratteristiche.



l'XPath per arrivare alla tabella dei documenti è:
//*[@id='p_p_id_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_']/div/div[2]/div/div[2]/table/tr

gli apici singoli servono a non far confondere googlesheet

l'XPath qui sopra serve a listare le intestazioni della tabella:



TitoloDescrizioneScarica
det_00262_15-03-2019.pdf - originale pdfDocumento principale
parere tecnico - firma digitaleAllegato parte integrante
Attestazione e regolarità digitale - firma digitaleAllegato parte integrante
Determinazione n. 00262/2019Allegato parte integrante

per listare invece i link a ciascun documento occorre tenere presente che l'Xpath
//*[@id='p_p_id_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_']/div/div[2]/div/div[2]/table/tr[2]/td[3]/a/@href
genererà due link , uno per il doc firmato e uno per quello non firmato


per passare da un doc all'altro cambia il tr[XX], ma il td resta sempre il terzo td[3]
alcuni doc hanno un solo doc, altri due: firmato oppure no
il secondo è quello non firmato, m l'id dei due è lo stesso
nell'Xpath non bisogna mettere il livello tbody del table, anche se IspezionaElemento include tbody
nell'Xpath id usare apici singoli, i doppi servono a importxml di google

il fatto che siano 4, è riportato nella pagina dell'Albo Pretorio di partenza , xpath: //td[5]
=IMPORTxML(A1;"//td[5]")
dove A1 era al solito:
http://crema.trasparenza-valutazione-merito.it/web/trasparenza/papca-ap/-/papca/igrid/1489180872/1489180071

i 4 doc si estraggono usando come _query di importxml queste:
//*[@id='p_p_id_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_']/div/div[2]/div/div[2]/table/tr[2]/td[3]/a/@href
//*[@id='p_p_id_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_']/div/div[2]/div/div[2]/table/tr[3]/td[3]/a/@href
//*[@id='p_p_id_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_']/div/div[2]/div/div[2]/table/tr[4]/td[3]/a/@href
//*[@id='p_p_id_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_']/div/div[2]/div/div[2]/table/tr[5]/td[3]/a/@href

questi xpath generano 7 link a pdf: il primo un solo link, gli altri due ciascuno.

Si osserva che i link sono molto lunghi, ma differiscono solo in due posizioni, utile a sapersi per automatizzare lo scraping:

  • dove c'è scritto false come valore di signed (dal carattere 308)
  • dove c'è l'identificativo del documento (lo stesso per signed e non signed) : dal carattere 367 se c'era true o dal carattere 368 se c'era false:
=STRINGA.ESTRAI(F15;SE(H15="firmato";367;368);7)
o meglio:
=STRINGA.ESTRAI(F13;SE(STRINGA.ESTRAI(F13;308;5)="true&";367;368);7)
dove F13 contiene il link al documento e viene restituito l'id del documento:

http://crema.trasparenza-valutazione-merito.it/web/trasparenza/papca-ap?p_p_id=jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet&p_p_lifecycle=2&p_p_state=pop_up&p_p_mode=view&p_p_resource_id=downloadAllegato&p_p_cacheability=cacheLevelPage&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_downloadSigned=true&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_id=7761769&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_action=mostraDettaglio&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_fromAction=recuperaDettaglio7761769
http://crema.trasparenza-valutazione-merito.it/web/trasparenza/papca-ap?p_p_id=jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet&p_p_lifecycle=2&p_p_state=pop_up&p_p_mode=view&p_p_resource_id=downloadAllegato&p_p_cacheability=cacheLevelPage&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_downloadSigned=true&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_id=7761770&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_action=mostraDettaglio&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_fromAction=recuperaDettaglio7761770
http://crema.trasparenza-valutazione-merito.it/web/trasparenza/papca-ap?p_p_id=jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet&p_p_lifecycle=2&p_p_state=pop_up&p_p_mode=view&p_p_resource_id=downloadAllegato&p_p_cacheability=cacheLevelPage&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_downloadSigned=false&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_id=7761770&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_action=mostraDettaglio&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_fromAction=recuperaDettaglio7761770
http://crema.trasparenza-valutazione-merito.it/web/trasparenza/papca-ap?p_p_id=jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet&p_p_lifecycle=2&p_p_state=pop_up&p_p_mode=view&p_p_resource_id=downloadAllegato&p_p_cacheability=cacheLevelPage&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_downloadSigned=true&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_id=7761771&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_action=mostraDettaglio&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_fromAction=recuperaDettaglio7761771
http://crema.trasparenza-valutazione-merito.it/web/trasparenza/papca-ap?p_p_id=jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet&p_p_lifecycle=2&p_p_state=pop_up&p_p_mode=view&p_p_resource_id=downloadAllegato&p_p_cacheability=cacheLevelPage&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_downloadSigned=false&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_id=7761771&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_action=mostraDettaglio&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_fromAction=recuperaDettaglio7761771
http://crema.trasparenza-valutazione-merito.it/web/trasparenza/papca-ap?p_p_id=jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet&p_p_lifecycle=2&p_p_state=pop_up&p_p_mode=view&p_p_resource_id=downloadAllegato&p_p_cacheability=cacheLevelPage&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_downloadSigned=true&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_id=7761772&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_action=mostraDettaglio&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_fromAction=recuperaDettaglio7761772
http://crema.trasparenza-valutazione-merito.it/web/trasparenza/papca-ap?p_p_id=jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet&p_p_lifecycle=2&p_p_state=pop_up&p_p_mode=view&p_p_resource_id=downloadAllegato&p_p_cacheability=cacheLevelPage&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_downloadSigned=false&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_id=7761772&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_action=mostraDettaglio&_jcitygovalbopubblicazioni_WAR_jcitygovalbiportlet_fromAction=recuperaDettaglio7761772

link al gsheet delle prove: 



Nessun commento:

Posta un commento