Vai al contenuto principale

Utilizzo delle espressioni regolari

Informazioni generali

In A-Parser si utilizzano espressioni regolari compatibili con Perl/JavaScript, che possono essere utilizzate:

La documentazione dettagliata sulle espressioni regolari può essere trovata nelle seguenti fonti:

In A-Parser è possibile elaborare qualsiasi risultato utilizzando un'espressione regolare; a tale scopo si utilizza l'opzione Parse custom results (Usa regex):

Opzione Usa regex

Particolarità d'uso e flag

  • Le espressioni regolari vengono scritte senza i delimitatori //
  • Sono supportati i seguenti flag:
    • i - ricerca senza distinzione tra maiuscole e minuscole
    • s - il punto include tutti i caratteri, inclusi i ritorni a capo
    • g - ricerca globale o sostituzione

Inoltre è possibile specificare un flag all'interno della regex stessa, ad esempio la ricerca della parola test in ogni riga di tutto il testo (o del codice della pagina, a seconda di dove viene applicata la regex) utilizzando il flag m (multi line - i simboli ^ e $ funzionano rispettivamente come inizio e fine riga):

(?m)^(.+?test.+?)$

Estrazione di informazioni arbitrarie

Descrizione del lavoro con le espressioni regolari nell'editor delle attività

Utilizzando l'opzione Parse custom results (Usa regex) o il Costruttore di risultati è possibile utilizzare le espressioni regolari per estrarre informazioni arbitrarie dai risultati dello scraping, ad esempio dal codice sorgente HTML delle pagine o dai risultati già preparati

  • In Parse result (Applica a) si seleziona il risultato dello scraper, che può essere un risultato semplice o un array
  • L'espressione regolare viene indicata senza delimitatori, seguita dalla possibilità di specificare un flag
  • In Result type (Tipo di risultato) si indica il tipo di risultato - Flat (risultato semplice) o Array (array). Se come risultato sorgente è selezionato un array o se viene utilizzato il flag g dell'espressione regolare, il risultato verrà sempre salvato in un array. Nel campo Name (Nome) si indica il nome dell'array
  • Ogni parentesi di cattura dell'espressione regolare può essere salvata come un elemento separato, il nome dell'elemento viene scritto nel campo corrispondente $1 to, $2 to... - dove la cifra indica il numero della parentesi di cattura
  • Nel campo RegEx (Regex) è possibile utilizzare il motore di template, il che permette di utilizzare la query come parte dell'espressione regolare

I nuovi risultati creati possono essere utilizzati nella formattazione dei risultati, nel costruttore di risultati, nel filtraggio e nella deduplicazione dei risultati o nella successiva opzione Parse custom results (Usa regex). Questa opzione è simile al costruttore di risultati quando si utilizza RegEx Match

Esempio di scraping di link a immagini dal codice HTML sorgente

Per risolvere questo compito, utilizziamo lo scraper Net::HTTPNet::HTTP per ottenere il codice sorgente della pagina. Applichiamo a $data (la pagina scaricata) un'espressione regolare con i flag isg, salviamo il risultato negli elementi src dell'array images. Nel formato del risultato indichiamo di visualizzare tutti gli elementi src separati da un ritorno a capo.

Al termine dello scraping per la query http://a-parser.com/ nel file dei risultati otterremo il seguente elenco:

/img/lang/en.png  
/img/lang/ru.png
img/[email protected]
https://files.a-parser.com/img/site/tour_ru/V1qpV.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_all_parsers_list.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_quick_task.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_2_task_editor_easy.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_3_task_editor_analyze_domains.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_4_task_editor_parse_emails.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_5_queue_fast_google.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_6_queue_spyserp.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_7_javascript_parser.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_8_scheduler.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_9_settings.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_10_proxies.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_11_templates.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_12_task_tester.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_13_parser_test.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_14_api.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_15_resources.png
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/13/13392.jpg?1570706020
data/avatars/s/16/16560.jpg?1586782475
data/avatars/s/1/1240.jpg?1537376153
styles/uix/xenforo/avatars/avatar_s.png
data/avatars/s/0/371.jpg?1412969226
styles/uix/xenforo/avatars/avatar_s.png
//mc.yandex.ru/watch/26891250
Scarica esempio

Come importare un esempio in A-Parser


eJxtVN9v2jAQ/l8sJArqYH3YS7Stokhomxgwmj5BJlnkyLz612yHFUX533d2Egfa
vYDv7rvvvvNdXBFH7bPdGLDgLEl2FdHhTBKSw5GW3JFboqmxYHx4R1bgkuRLmm7Q
HxEVcWcNmHMorVNiC7ZJNM0BuaijwS7gBc2PTBS7n5+zsTWH/d6OP/mf3XBPspvJ
+H4UTh08bZiZLSJh66LG0DM6w/+KigATtAAbkV4zwSIkq3uR6gTGsBwQxXK0j8oI
6kwn+kR56WGDhmvShG+GgyBWDkekzrJYYBGiHq7vJu3dxeAjPUGqfAnGoXcv0Gr1
DvBmwEe7MqOJe/EMNM+ZY0pS3lTwnfRVnyT7E0RKhVg8GgZ2YZRAl4NA4J3nTt2O
DIJNkKIMuT+aHJIcKbdwSyxKXVAUkr+OMAeGOmXW2utBf0WUnHG+hBPwHhb4H0rG
c1yV2RGTvraJ/4es33DUsb3LUjisvwY1RJZgPay/91m5WqqiuwzOBHNo27kqpR/M
e3Q+A+h4ZysPE8pALNMyt9Xxa9Ag/Wb0I5vp3nXVxtVYrp0HJY+sWLfb1iFLmeIn
t5ZzJTQH35csOcexWNj26zGz7Ri80Qt8nTwPJa4+VqcUt98eG6naMFy/D16gwJu8
rNpSHijnT9vlZYT0K4XGL+e0TaZT+q55BiYHJabEJzooFK4UtlVn8ZGIT0l18VQk
VY1j+m03Dcb35BHow8uxOAOS3NX/AFJvlP8=

Costruttore di espressioni regolari

A partire dalla versione 1.2.78 è stato aggiunto il Costruttore di espressioni regolari.

È possibile trovarlo nella scheda Tools -> Regex Builder. È inoltre possibile inviare il codice delle pagine ottenuto direttamente dal Test di scraping. Per fare ciò, è necessario attivare la modalità debug e cliccare sul link Go to RegEx Builder.

Aprire il codice della pagina nel costruttore di espressioni regolari

Nel costruttore è possibile scegliere il linguaggio di programmazione in cui verranno utilizzate le espressioni regolari ottenute.

Per lavorare con il costruttore, è necessario incollare il testo sorgente nel campo a sinistra (oppure verrà inserito automaticamente dal Test di scraping quando si clicca su Go to Regex Builder). A destra si configurano i parametri della futura espressione regolare.

Per comporre una semplice espressione regolare (ad esempio, per ottenere il title) è sufficiente indicare gli elementi necessari dell'espressione regolare.

  • Nel campo Before group (Prima del gruppo) inseriamo i caratteri che si trovano prima dell'informazione che ci serve
  • Nel campo After group (Dopo il gruppo) inseriamo i caratteri che si trovano dopo i dati necessari
  • Nel campo Il gruppo inizia con indichiamo i caratteri con cui deve iniziare la stringa cercata
  • Nel campo Group ends with (Il gruppo finisce con) indichiamo i caratteri che devono trovarsi alla fine della stringa cercata
Esempio di ottenimento del title utilizzando il costruttore di espressioni regolari

Come si vede nello screenshot sopra, stiamo componendo un'espressione regolare che selezionerà il title del sito. Prima del gruppo inseriamo <title> e dopo il gruppo </title>, inoltre, per esempio, indichiamo che la stringa cercata inizia con la lettera W.

Per un test completo dell'espressione regolare ottenuta è possibile attivare i flag necessari: g, s e i.

È anche possibile comporre espressioni regolari più complesse con 2 o più gruppi. Ad esempio, proviamo a comporre un'espressione regolare per raccogliere tutti i link e gli anchor in un elenco <li>. Per fare ciò dobbiamo attivare il flag g e aggiungere un altro gruppo di ricerca, poiché nel primo gruppo ci saranno i link e nel secondo gli anchor.

Esempio di utilizzo dei gruppi nel costruttore di espressioni regolari

Impostando i parametri necessari per entrambi i gruppi, otteniamo l'espressione regolare:

<li><a href="(.+?)">(.+?)<\/a

Per verificare l'espressione regolare premere il pulsante Test:

Verifica della regex creata nel costruttore di espressioni regolari

Dopo l'esecuzione dell'espressione regolare, in basso viene visualizzato il risultato del suo lavoro: la stringa completa e i gruppi catturati. Con un doppio clic su qualsiasi elemento nella tabella dei risultati, il testo iniziale scorre fino al punto in cui si trova tale corrispondenza.