3 Temmuz 2015 Cuma

Nokogiri ile HTML/XML Dökümanlarını Parsing İşlemi

Bir önceki yazımda bir web sitesini Request ve Respond işlemlerinin nasıl yapıldığından bahsetmiştim. Bu işlemlerin ardından o web sitesinde istediğimiz bir kısmı Parse etme işleminden bahsedicem bu yazımda. 

Nokogiri: Nokogiri bir HTML, XML, SAX ve Okuyucu Parserıdır. Ruby'nin Gem listinin içinde yer alır. Dökümanların çekimi sırasında CSS ve XPath ayırıcılarından yardım alır.

HTML: Web sayfalarını oluşturmak için kullanılan standart metin işaretleme dilidir.

XML: Hem insanlar hem bilgi işlem sistemleri tarafından kolayca okunabilecek dökümanlar oluşturmaya yarayan bir işaretleme dilidir.

SAX: XML dosyalarını olay tabanlı, sözcüksel işlemedir. Dosya içerisindeki her düğüm bir geri-besleme fonksiyonu aracılığı ile istemci koda yansıtılır.

CSS: HTML'e ek olarak metin ve format biçimlendirme alanında fazladan olanaklar sunan bir Web teknolojisidir.

XPath: XML dökümanındaki bir bilgiyi bulmak için kullanılan bir dildir. XML dökümanı içindeki elemanları ve onlara ait özellikleri incelemeye yarar.

Nokogiri Kurulumu:

Bu komutu terminale yazdığımızda nokogiri eğer yüklü değilse yüklemiş oluruz.



Kullanımı için gerekli 'require' işlemleri:

Kodun başına mutlaka nokogiri ve open-uri gem'lerini require etmemiz gerekir.





HTML dökümanını parse etme:






Bu komut ile verilen linkteki entry'i fetch etmiş oluyoruz. Sonraki adımda da bu entry içindeki yorumlardan istediğimiz birisini parse edeceğiz.
Parse etmeyi istediğimiz yorumun içinden bir kelimeyi seçip sağ tıklayıp "Öğeyi Denetle" deriz.

Burada işaretli kısımdaki id içeriğini altta gösterilen kod kısmında parametre olarak kullanırız ve o yorumun tamamını parse etmiş oluruz.






Bu kodun çıktısı olarakta artık o yorumu parse etmiş oluruz.









Bu işlemi bir döngü içinde başlık kısmına denk gelen id numarasından başlanarak arttıra arttıra giderek cevap alabildiğimiz entryleri parse etmemiz mümkündür. Ben bu işlemi CSS kullanarak yaptım bunun XPath ile yapılması da mümkündür tabiki. Fakat o kısımda pek bir bilgim olmadığından CSS'i tercih ettim.
Yine bu olayı ben HTML kullanarak yaptım bunun XML kullanarak bir dosyadan parse etmekte mümkündür. Aşağıda sizlere onun kodunu paylaşıyorum.







Bazı Parse Ayarları:


  • NOBLANKS: Boş nodeları siler
  • NOENT: Entitilerin yerine geçer
  • NOERROR: Hata raporlarını ortadan kaldırır.
  • STRICT: Kusurlu dökümanların parse edilidiği zaman bir hata yükseltir
  • NONET: Hiç internet bağlantısı olmadığında parse etme işlemini engeller.
Yukarıda ayarların kodda nasıl kullanıldığına bakacak olursak;







Bu yazımın da sonuna gelmiş bulunuyoruz okuyup vakit ayırdığınız için teşekkür ederim. Umarım birazcıkda olsa ilgilenenlere faydalı olmuştur. Sonraki yazılarımda görüşmek üzere :) 

Hiç yorum yok:

Yorum Gönder