Utilizzo delle espressioni regolari
Informazioni generali
In A-Parser si utilizzano espressioni regolari compatibili con Perl/JavaScript, che possono essere utilizzate:
- Durante lo scraping di informazioni arbitrarie da qualsiasi sito
- Nel costruttore di query per estrarre o sostituire parte di una query
- Nel costruttore di risultati per trasformare qualsiasi risultato
- Durante l'uso dei filtri
- Nel costruttore di espressioni regolari
- Durante la verifica della disponibilità della pagina successiva nello scraper
Net::HTTP
La documentazione dettagliata sulle espressioni regolari può essere trovata nelle seguenti fonti:
- Espressioni regolari su Wikipedia
- Enciclopedia universale delle espressioni regolari standard PCRE
- Discussione Condividiamo le regex sul forum
In A-Parser è possibile elaborare qualsiasi risultato utilizzando un'espressione regolare; a tale scopo si utilizza l'opzione Parse custom results (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

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) oArray(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::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.

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

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.

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:

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.
Link utili
🔗 Espressioni regolari per principianti
Mi chiamo Vitaliy Kotov e ne so un po' di espressioni regolari. Di seguito spiegherò le basi del loro funzionamento...
🔗 Espressioni regolari (regexp) — le basi
Le espressioni regolari sono un meccanismo per la ricerca e la sostituzione di testo. In una riga, in un file, in più file...
🔗 ⏩Scraping del catalogo di attrezzature industriali
Esempio di utilizzo delle regex nello scraping di un catalogo di attrezzature industriali
🔗 ⏩Scraping della risorsa Booking.com
Esempio di utilizzo delle regex nello scraping della risorsa Booking.com
🔗 ⏩Ricerca di pagine di contatto
Esempio di utilizzo delle regex nello scraping di pagine di contatto