Uno scraper di documenti configurabile e strutturato.
Go to file
loviuz 99f0fbed83 Completamento README prima versione 2022-01-08 20:39:22 +01:00
example Completamento README prima versione 2022-01-08 20:39:22 +01:00
src/Scraping Completamento scraping con dowload 2022-01-08 20:30:33 +01:00
.gitignore Completamento classe scraping 2022-01-08 14:28:07 +01:00
LICENSE Initial commit 2022-01-06 17:15:27 +01:00
README.md Completamento README prima versione 2022-01-08 20:39:22 +01:00
composer.json Primo commit 2022-01-06 17:20:40 +01:00
config.example.php Completamento scraping con dowload 2022-01-08 20:30:33 +01:00
scrape.php Completamento scraping con dowload 2022-01-08 20:30:33 +01:00

README.md

Structured Scraper

Uno scraper di documenti configurabile e strutturato.

Come installare

Scaricare le dipendende con composer:

php composer.phar install

Come funziona

Occorre creare un file di configurazione partendo dal file di esempio config.example.php. In questo file vanno definiti:

  • $start_url: è un array contenente le URL di partenza da scansionare
  • $link_rules: sono le regole per trovare i sub-link. Partendo dalla prima URL infatti lo script non scansiona tutti i link ma solamente quelli che corrispondono al pattern XPath definito in questo array, in ordine di profondità, cioè nel primo URL scansionato vengono filtrati i sub-link in base alla regola XPath con indice 0, nella pagina contenuta nel prossimo sub-link verranno estratti i link in base alla regola XPath con indice 1, e così via
  • $allowedMimetypes: è un array che indica quali file scaricare in base al mime-type. E' un array associativo perché quando viene trovato un link con il mime-type corrispondente viene scaricato applicando l'estensione associata (nei casi in cui il nome del file non sia chiaro dal'URL)
  • $download_dir: è semplicemente la directory dove salvare i file trovati.

Demo

Per provarlo in funzione è possibile usare la cartella example come test. All'interno ci sono le istruzioni.

TODO

  • Salvare in un database locale le URL già scansionate, per evitare di ri-scaricare gli stessi file
  • Eseguire le chiamate http in parallelo per velocizzare la procedura