Ana içeriğe atla

Düzenli İfadelerin Kullanımı

Genel Bilgiler

A-Parser içerisinde Perl/JavaScript uyumlu düzenli ifadeler (regex) kullanılır ve şu alanlarda uygulanabilir:

Düzenli ifadeler hakkında detaylı dokümantasyonu aşağıdaki kaynaklarda bulabilirsiniz:

A-Parser içerisinde herhangi bir sonucu düzenli ifade yardımıyla işleme imkanı mevcuttur, bunun için Parse custom results (Regex kullan) seçeneği kullanılır:

Regex kullan seçeneği

Kullanım Özellikleri ve Bayraklar

  • Düzenli ifadeler // sınırlayıcıları olmadan yazılır
  • Aşağıdaki bayraklar desteklenir:
    • i - büyük/küçük harf duyarsız arama
    • s - nokta sembolü, satır sonları dahil tüm karakterleri kapsar
    • g - küresel arama veya değiştirme

Ek olarak, düzenli ifadenin içinde de bayrak belirtmek mümkündür; örneğin, tüm metindeki (veya düzenli ifadenin uygulandığı sayfa kodundaki) her satırda test kelimesini m bayrağını (multi line - ^ ve $ sembolleri sırasıyla satır başı ve sonu olarak çalışır) kullanarak aramak için:

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

Rastgele Bilgi Ayıklama

Görev düzenleyicide düzenli ifadelerle çalışma açıklaması

Parse custom results (Regex kullan) seçeneği veya Sonuç oluşturucu yardımıyla, veri çekme sonuçlarından (örneğin HTML sayfalarının kaynak kodundan veya önceden hazırlanmış sonuçlardan) rastgele bilgi ayıklamak için düzenli ifadeler kullanmak mümkündür:

  • Parse result (On) (Şuna uygula) kısmında veri kazıyıcıdan gelen sonuç seçilir; bu basit bir sonuç veya bir dizi olabilir
  • Düzenli ifade sınırlayıcılar olmadan belirtilir, hemen ardından bayrak belirtme imkanı vardır
  • Result type (Sonuç türü) kısmında sonucun türü belirtilir - Flat (basit sonuç) veya Array (dizi). Kaynak sonuç olarak bir dizi seçilmişse veya düzenli ifadede g bayrağı kullanılıyorsa, sonuç her zaman bir diziye kaydedilir. Name (Ad) alanında dizinin adı belirtilir
  • Düzenli ifadedeki her yakalama parantezi ayrı bir öğe olarak kaydedilebilir; öğenin adı ilgili alana $1 to, $2 to... şeklinde yazılır - burada rakam yakalama parantezinin numarasını temsil eder
  • RegEx (Regex) alanında şablon motoru kullanılabilir, bu da sorgunun düzenli ifadenin bir parçası olarak kullanılmasına olanak tanır

Oluşturulan yeni sonuçlar sonuç biçimlendirme, sonuç oluşturucu, filtreleme ve sonuç deduplikasyonu işlemlerinde veya bir sonraki Parse custom results (Regex kullan) seçeneğinde kullanılabilir. Bu seçenek, RegEx Match kullanıldığında sonuç oluşturucuya benzer şekilde çalışır.

Kaynak HTML kodundan resim bağlantılarını çekme örneği

Bu sorunu çözmek için sayfanın kaynak kodunu almak üzere Net::HTTPNet::HTTP veri kazıyıcısını kullanıyoruz. $data (indirilen sayfa) değişkenine isg bayraklarıyla düzenli ifadeyi uyguluyoruz ve sonucu images dizisinin src öğelerine kaydediyoruz. Sonuç formatında, tüm src öğelerini satır sonu karakteriyle ayırarak yazdırmayı belirtiyoruz.

Veri çekme sonucunda http://a-parser.com/ sorgusu için sonuç dosyasında aşağıdaki listeyi elde ederiz:

/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
Örneği indir

A-Parser örnek nasıl içe aktarılır


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=

Düzenli İfade Oluşturucu

1.2.78 sürümünden itibaren Düzenli İfade Oluşturucu eklenmiştir.

Bunu Tools -> Regex Builder sekmesinde bulabilirsiniz. Ayrıca elde edilen sayfa kodunu doğrudan Test Veri Çekme kısmından gönderebilirsiniz. Bunun için debug modunu açmanız ve Go to RegEx Builder bağlantısına tıklamanız gerekir.

Sayfa kodunu düzenli ifade oluşturucuda aç

Oluşturucuda, elde edilen düzenli ifadelerin kullanılacağı programlama dilini seçme imkanı vardır.

Oluşturucu ile çalışmak için sol taraftaki alana kaynak metni yapıştırmanız gerekir (veya Go to Regex Builder geçişi yapıldığında Test Veri Çekme kısmından otomatik olarak yapıştırılacaktır). Sağ tarafta ise gelecekteki düzenli ifadenin parametrelerini ayarlıyoruz.

Basit bir Düzenli İfade oluşturmak için (örneğin, başlığı almak için) düzenli ifadenin gerekli öğelerini belirtmek yeterlidir.

  • Before group (Gruptan önce) alanına, ihtiyacımız olan bilgiden önce gelen karakterleri yazıyoruz
  • After group (Gruptan sonra) alanına, gerekli verilerden sonra gelen karakterleri yazıyoruz
  • Grup şununla başlar kısmında, aranan dizenin başlaması gereken karakterleri belirtiyoruz
  • Group ends with (Grup şununla biter) kısmında, aranan dizenin sonunda olması gereken karakterleri belirtiyoruz
Düzenli ifade oluşturucu kullanarak başlık alma örneği

Yukarıdaki ekran görüntüsünde görüldüğü gibi, sitenin title bilgisini seçecek bir düzenli ifade oluşturuyoruz. Gruptan önce <title> ve gruptan sonra </title> koyuyoruz, ayrıca örnek olarak aranan dizenin W harfi ile başladığını belirtiyoruz.

Elde edilen düzenli ifadeyi tam olarak test etmek için gerekli bayrakları açma imkanı vardır: g, s ve i.

Ayrıca 2 veya daha fazla grup içeren daha karmaşık düzenli ifadeler de oluşturulabilir. Örnek olarak, <li> listesindeki tüm bağlantıları ve çıpaları (anchor) toplamak için bir düzenli ifade oluşturmayı deneyelim. Bunun için g bayrağını açmamız ve bir arama grubu daha eklememiz gerekir, çünkü ilk grupta bağlantılar, ikinci grupta ise çıpalar olacaktır.

Düzenli ifade oluşturucuda grupların kullanım örneği

Her iki grup için gerekli parametreleri ayarladıktan sonra şu düzenli ifadeyi elde ederiz:

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

Düzenli ifadeyi kontrol etmek için Test düğmesine basın:

Düzenli ifade oluşturucuda oluşturulan regex'in kontrolü

Düzenli ifade çalıştırıldıktan sonra, alt kısımda çalışmasının sonucu görüntülenir: tam satır ve yakalanan gruplar. Sonuç tablosundaki herhangi bir öğeye çift tıklandığında, başlangıç metni bu eşleşmenin bulunduğu yere kaydırılır.