Analizare rubin nokogiri

Analizare rubin nokogiri

Articolul discută despre un simplu parser de știri folosind metoda nokogiri de bibliotecă prin CSS-selectori.

Parsarea aplicații Web folosind limbajul Ruby - este mai ușor decât ați putea crede. Începem cu un exemplu simplu, în scopul de a primi formatul formatat matrice JSON de obiecte care vor fi utilizate pentru teatru locale de film.

Primul pas este de a determina calea pentru a încărca pagina html. În Ruby în acest scop, se realizează net :: HTTP. l folosește biblioteca open-uri. o folosim pentru codul nostru a paginii.

Deci, primul lucru pe care vom face cerere grabing HTML la un server de la distanță.


Ok, am primit codul sursă al paginii, este acum pentru a începe căutarea de informații. In acest scop bijuterie Nokogiri. Acum vom crea o nouă instanță a Nokogiri, care va primi codul nostru.

Utilizați nokogiri Este minunat putem face căutare de informații folosind CSS-selectorii, care este foarte convenabil, de asemenea, puteți face o căutare folosind XPath.

Ei bine, acum avem un document care, în sine conține o listă de filme. Fiecare are o structură similară de tip html, de exemplu:


Fiecare clasă are o listă de filme care arată .showing numele. putem limita selecția pe pagina specificând limitele în această clasă.
Să examinăm fiecare linie în procesul nostru de la un moment dat, dar la început vă va prezenta o soluție gata.


Notă: Vă mulțumim pentru codul de revizuire Anton Gorodisheninu.

Luați în considerare ceea ce face ca fiecare linie


În primul rând obține un identificator unic în newsletter-ul nostru, care servește ca atributul id al markup html.
vom folosi opțiunea # 96; # 96; arătând [ 'id'] # 96; # 96; care ne va întoarce „event_7557“. Ne interesează doar identificatorul întreg, astfel încât vom împărți șirul rezultat utilizând caracterul de subliniere la .split array ( „_“) și apoi să ia ultimul element dintr-o matrice și converti la un tip de număr întreg .last.to_i


Aici vom găsi toate etichetele din facilitatea noastră folosind # 96; # 96; .css # 96; # 96; o metodă care returnează o matrice de elemente potrivite. Apoi, pentru fiecare element prin metoda .strip elimina spațiul gol. De exemplu, mai sus returnează codul de o [ „comedie“, „DVD“, „filmul“]


Aici vom obține titlul pentru primul element at_css. care se află în H1 selectorul> o. Apoi, pentru fiecare sub-selector este îndepărtat, cei care au numele de durata. Ne scoate din link-urile noastre text și de a elimina orice spații suplimentare.

În continuare, codul pentru afișarea datei și orei. Aici este un pic mai complicat, deoarece filmele pot prezenta câteva zile și, uneori, prețul poate fi în aceeași celulă. Noi mapim data, care se gaseste folosind DateTime.parse, iar rezultatul este o matrice de obiecte Ruby - DateTime.


Obținem o descriere a locului unde Ștergețidin # 96; # 96; [mai mult. ] # 96; # 96; Utilizarea metodei .gsub

Scriem valorile primite într-o matrice.

Acum, pentru producția de informații găsite converti la JSON


Pentru a face acest lucru, adăugați codul