• Главная
  • Карта сайта
Не найдено

Що таке парсер (граббер)? - приклади PHP-парсеров

  1. Приклад використання cURL для PHP-граббера
  2. PHP-парсер значення з рядка
  3. XML-парсер на PHP
  4. HTML-парсер на PHP

Давайте розберемося, що таке парсер або граббер в програмуванні Давайте розберемося, що таке парсер або граббер в програмуванні. Що собою являє процес парсинга на прикладах створення PHP-граббер. Як бонус - готові парсери RSS-стрічки і отримання тематичної частини статей з їх demo-сайтами.

Парсер (від англ. Parser) або граббер (від англ. Grabber) - програмне забезпечення, призначене для аналізу і розбору вихідних даних, з метою їх обробки і подальшої використання в необхідному вигляді.

Походження терміна «граббер» тісно пов'язане з парсером, але має на увазі вилучення даних з джерела для цього не призначеного, т. Е. Ми буквально «грабуємо» дані джерела для їх використання в особистих цілях.

Сам же процес парсинга (англ. Parsing) або скраппінга (англ. Skrapping) зазвичай має на увазі виявлення унікальних ознак або закономірностей вживання даного нас фрагмента даних, з метою побудови відповідних правил їх «виділення» і «захоплення» у вихідних даних.

Приклад використання cURL для PHP-граббера

Окремо варто відзначити, що для роботи граббера часто використовується імітація браузера (наприклад, імітувати User Agent) з метою приховування процесу граббінг і обходу захисту від граббінг.

приклад використання cURL в PHP:

$ Ch = curl_init (); curl_setopt_array ($ ch, array (CURLOPT_URL => $ url, CURLOPT_USERAGENT => 'Mozilla / 5.0 (Windows NT 6.1; rv: 8.0) Gecko / 20100101 Firefox / 8.0', CURLOPT_AUTOREFERER => true, // імітація передачі реферера при редирект CURLOPT_ENCODING => "", // підтримка декодіровнія результату: identity, deflate і gzip CURLOPT_HEADER => false, // відключення заголовків з виведення CURLOPT_RETURNTRANSFER => true, // результат в curl_exec () CURLOPT_CONNECTTIMEOUT => 60, / / ​​обмеження часу з'єднання CURLOPT_TIMEOUT => 60, // обмеження часу виконання cURL функції CURLOPT_FOLLOWLOCATION => true, // слідувати по редирект CURLOPT_MAXREDIRS => 5, // максимальна к-ть редиректів CURLOPT_SSL_VERIFYPEER => false, // відключення перевірки сертифіката вузла CURLO PT_SSL_VERIFYHOST => false, // відключення перевірки сертифіката хоста)); $ Content = curl_exec ($ ch); $ Errno = curl_errno ($ ch); $ Error = curl_error ($ ch); $ Info = curl_getinfo ($ ch); curl_close ($ ch);

PHP-парсер значення з рядка

Наприклад, з рядка: не май 100 рублів, а май 100 друзів - необхідно отримати кількість рублів. Унікальними ознаками тут можуть служити цілочисельне значення і ідентифікатор грошової одиниці «рублів».

Унікальними ознаками тут можуть служити цілочисельне значення і ідентифікатор грошової одиниці «рублів»

Парсинг значення з рядка

Найпростіше правило парсинга на основі регулярного виразу в PHP інтерпретації матиме вигляд:

$ str = 'не май 100 рублів, а май 100 друзів'; if (preg_match_all ( " '(\ d +) \ s * рублей'iu", $ str, $ matches)) {echo' <pre> '; var_dump ($ matches); echo '</ pre>'; }

Результат роботи цього PHP-парсера матиме вигляд:

array (2) {[0] => array (1) {[0] => string (16) "100 рублів"} [1] => array (1) {[0] => string (3) "100 "}}

Розглянемо регулярний вираз: '(\ d +) \ s * рублей'iu - детальніше:

  • сам вираз «обгорнуті» одинарними лапками з метою використання модифікаторів: i - ігнорувати регістр і u - використовується UTF-кодування;
  • круглі дужки - подмаскі, з вкладеним правилом, яка повертається як друге значення масиву $ matches [1];
  • \ D - спецсимвол для позначення символу від 0 до 9;
  • + - квантіфікатор для позначення одного або більше символів;
  • \ S - спецсимвол для позначення пробілу символу (пробіл, табуляція і т. Д.);
  • * - квантіфікатор для позначення жодного або більше символів.

Примітка: парсер може бути написаний будь-якою мовою програмування: C #, Delphi, Java, PHP і т. Д., Але суть його від цього не змінюється.

Приватним і частим випадком парсинга служить розбір структурованих даних в форматі XML або HTML.

XML-парсер на PHP

Для створення XML-парсера на PHP зручно використовувати розширення SimpleXML для перетворення XML в об'єкт, наприклад:

$ Str = <<< XML <? Xml version = '1.0'?> <Document> <price> 100 </ price> <unit> руб. </ Unit> </ document> XML; $ Xml = simplexml_load_string ($ str); echo '<pre>'; var_dump ($ xml); echo '</ pre>';

Результат роботи цього PHP-парсера матиме вигляд:

object (SimpleXMLElement) # 1 (2) {[ "price"] => string (3) "100" [ "unit"] => string (7) "руб." }

Ваш бонус: приклад роботи PHP-парсера розбору RSS-стрічки ви можете подивитися тут: parser.c3h.ru/rss , А безкоштовно скачати його вихідний код тут: yadi.sk/d/6f8KsYkPtCyjD .

HTML-парсер на PHP

Для створення HTML-парсера на PHP зручно використовувати розширення DOM , Наприклад:

$ str = '<html> <body> не май <span class = "price"> 100 </ span> рублів, а май <span class = "count"> 100 </ span> друзів </ body> </ html > '; $ Doc = new DOMDocument (); $ Doc-> loadHTML ($ str); $ Spans = $ doc-> getElementsByTagName ( 'span'); if ($ spans-> length> 0) {for ($ i = 0; $ i <$ spans-> length; $ i ++) {$ span = $ spans-> item ($ i); if ($ span-> hasAttribute ( 'class')) {$ class = $ span-> getAttribute ( 'class'); if (preg_match ( " '^ price $' iu", $ class)) {echo 'price ='. $ Span-> textContent. ' <br/> '; }}}}

Результат роботи цього PHP-парсера матиме вигляд:

price = 100

Ваш бонус: приклад роботи PHP-парсера розбору RSS-стрічки ви можете подивитися тут: parser.c3h.ru/html , А безкоштовно скачати його вихідний код тут: yadi.sk/d/KdPU4OnitCyhZ .

Примітка: читайте також статтю « Парсер сайтів на прикладі Яндекс парсеру ».

Коротке посилання: http://goo.gl/fb/US91iE

Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью