Пишемо парсер контенту php. Парсер на PHP – це просто. Пишемо скрипт парсера
Потроху вивчаю можливості PHP для створення парсерів. Я вже писала про те, як парсити. Зараз розповім про один із способів парсингу html (він підійде і для xml теж, до речі). Повторю, що в php я не гуру, тому буду дуже вдячна, якщо ви залишите свої коментарі до теми.
Поблукаючи нашими та англомовними форумами, зрозуміла, що суперечка про те, чи краще парсити html регулярними виразами або використовувати для цих цілей можливості PHP DOMє холіваром. Сама ж я дійшла висновку, що все залежить від складності структури даних. Адже якщо структура досить складна, то за допомогою регулярок доводиться ширяти в кілька етапів: спочатку виділити великий шматок, потім розділити його на більш маленькі і т.д.. У результаті, якщо дані складні (або їх дуже багато), то процес парсингу може значно затягнутися. Ресурсоємність у цьому випадку ще залежатиме, звичайно ж, від самих регулярних виразів. Якщо в регекспах багато ". *" (Вони є найбільш ресурсомісткими, тому що "прочісують" вихідний код з максимальною жадібністю), то уповільнення буде помітним.
І ось саме в цьому випадку дуже доречно доводиться PHP DOM. Це зручний інструмент для парсингу як XML, так і HTML. Деякі дотримуються думки, що парсить html регексп взагалі не можна, і люто захищають PHP DOM.
У свою чергу, я ознайомилася з цим розширенням, написавши простенький скрипт. Який і наводжу тут, щоб наочно показати, як це все легко і просто. У прикладі розбирається html із частиною карти сайту цього блогу. Він присвоєний змінній прямо всередині коду. У " бойових " умовах вихідні дані слід отримувати, наприклад, через file_get_contents().
$html = "
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Останні теми блогу
http://сайт/2009/08/blog-post_06.html | Бази |
MySQL та Delphi. Express-метод | |
http://сайт/2009/08/blog-post.html | Пост про те, що краще сто разів перевірити |