Разбор nokogiri рубин
В статията се разглежда просто новини за синтактичен анализ се използва методът на библиотека nokogiri чрез CSS-селектори.
Разбор на уеб приложения с помощта на езика Ruby - това е по-лесно, отколкото си мислите. Ще започнем с един прост пример, целта за получаване на форматиран JSON формат масив от обекти, които ще бъдат използвани за местното кино.
Първата стъпка е да се определи пътя, за да заредите страницата HTML. В Ruby за тази цел се реализира Net :: HTTP. той използва отворен URI библиотека. ние го използваме за нашия код на страницата.
Така че първото нещо, което ние ще направим HTML Grabing заявка към отдалечен сървър.
Добре, ние имаме страница изходния код, сега е да започнете да търсите информация. За тази цел има скъпоценен камък Nokogiri. Сега ние се създаде нова инстанция на Nokogiri, който ще получите код.
Използвайте nokogiri Това е страхотно можем да направим търсене на информация с помощта на CSS-селектори, което е много удобно, можете да направите търсене с помощта на XPath.
Е, сега ние имаме документ, който сам по себе си съдържа списък с филми. Всеки има подобна структура от тип HTML, например:
Всеки клас има списък от филми, показващи .showing име. ние може да ограничи избора на страницата, като посочите границите, в този клас.
Нека разгледаме всеки ред в нашия процес в даден момент, но в началото ще представи готово решение.
Забележка: Благодаря ви за кода за преглед Антон Gorodisheninu.
Помислете за това, което прави всяка линия
На първо място да получите уникален идентификационен номер в нашия бюлетин, който служи като атрибут за идентификатор на HTML маркирането на.
ние използваме опцията # 96; # 96; показваща [ "ID"] # 96, # 96; което ще ни върне "event_7557". Ние се интересуваме само от идентификатор на число, така че ние се разделят получения низ с помощта на характера долна да .split масив ( "_") и след това да вземе последния елемент от масив и го превърнете в тип число .last.to_i
Тук откриваме всички маркери в нашето съоръжение, използвайки # 96; # 96; .css # 96; # 96; метод, който връща масив на съвпадение елементи. След това, за всеки елемент по метода .strip премахване на празно пространство. Например горе връща код [ "комедия", "DVD", "филм"]
Тук получава и титлата за първи at_css елемент. който се намира в h1 селектор> а. След това за всеки под-селектор е отстранена, тези, които носят името на гредореда. Вземаме от нашите текстови връзки и премахване на излишни интервали.
На следващо място, кодът за дисплея на дата и час. Тук е малко по-сложно, тъй като филмите могат да се проявят след няколко дни, а понякога и цената може да бъде в една и съща клетка. Ние mapim дата, която се изразява чрез DateTime.parse и резултатът е масив от Ruby обекти - DateTime.
Ние получите описание на това, когато изтриете # 96; # 96 [повече. ] # 96, # 96; Използването .gsub метод
Пишем получените стойности в масив.
Сега за намерена информация изхода конвертирате в JSON
За да направите това, добавете кода