Парсинг html і скрепінг за допомогою простої бібліотеки html dom

Крок 1. Підготовка
В першу чергу потрібно скопіювати бібліотеку simpleHTMLdom. яка доступна на сайті sourceforge.net.
В архіві для завантаження зберігаються декілька файлів, але вам потрібен тільки один simple_html_dom.php. Всі інші файли - це приклади і документація.

Крок 2. Основи парсинга
Дану бібліотеку дуже просто використовувати, але є кілька основних моментів, які слід вивчити до того, як ви почнете приводити її в дію.
Завантаження HTML
Ви можете створити вихідний об'єкт завантаживши HTML або з рядка, або з файлу. Завантаження з файлу може бути виконана або через вказівку URL. або з вашої локальної файлової системи.
Примітки: Метод load_file () делегує роботу функції PHP file_get_contents. Якщо allow_url_fopen не встановлено в значення true в вашому файлі php.ini. може бути відсутнім можливість відкривати віддалені файли таким чином. В цьому випадку ви можете повернутися до використання бібліотеки CURL для завантаження віддалених сторінок, а потім прочитати за допомогою методу load ().
Доступ до інформації

Як тільки у вас буде об'єкт DOM, ви зможете запрацювати з ним, використовуючи спосіб find () і створюючи колекції. Колекція - це група об'єктів, знайдених по селектору. Синтаксис дуже схожий на jQuery.
В даному прикладі HTML ми збираємося розібратися, як отримати доступ до інформації у другому параграфі, змінити її і потім вивести результат дій.
Рядки 2-4. Завантажуємо HTML з рядка, як пояснювалося вище.
Рядок 6. Знаходимо всі теги
в HTML, і повертаємо їх у масив. Перший параграф буде мати індекс 0, а наступні параграфи індексуються відповідно.
Рядок 8. Отримуємо доступ до другого елементу в нашій колекції параграфів (індекс 1), додаємо текст до його атрибуту innertext. Атрибут innertext представляє вміст між тегами, а атрибут outertext представляє вміст включаючи теги. Ми можемо замінити тег повністю, використовуючи атрибут outertext.
Тепер додамо один рядок і модифікуємо клас тега нашого другого параграфа.
Остаточний вигляд HTML після команди save матиме вигляд:
інші селектори
Кілька інших прикладів селектор. Якщо ви використовували jQuery, все здасться вам знайомим.
Перший приклад вимагає пояснень. Всі запити за замовчуванням повертають колекції, навіть запит з ID, який повинен повернути тільки один елемент. Однак, задаючи другий параметр, ми говоримо "повернути тільки перший елемент з колекції".
Це означає, що $ single - одиничний елемент, а не НЕ масив елементів з одним членом.
Інші приклади досить очевидні.
документація
Повна документація по бібліотеці доступна на сторінці проекту.

Крок 3. Приклад з реального світу
Для демонстрації бібліотеки в дії ми напишемо скрипт для скрепінга вмісту сайту net.tutsplus.com і формування списку заголовків і опису статей, представлених на сайте ... .тільки як приклад. Скрепінг відноситься до області трюків в веб, і не повинен вживатись без дозволу власника ресурсу.

Почнемо з підключення бібліотеки і виклику функції getArticles із зазначенням сторінки, з якої ми хочемо почати парсинг.
Крок 4. Початок функції парсинга
Крок 5. Знаходимо ту інформацію, яка нам потрібна

Це суть функції getArticles. Потрібно розібратися більш детально, щоб зрозуміти, що відбувається.
Рядок 1. Створюємо масив елементів - тег div з класом preview. Тепер у нас є колекція статей, збережена в $ items.
Рядок 4. $ post тепер посилається на одиничний div класу preview. Якщо ми поглянемо до оригінального HTML, то побачимо, що третій елемент нащадок - це тег H1. який містить заголовок статті. Ми беремо його і присвоюємо $ articles [index] [0].
Рядок 5. Шостий нащадок $ post - це
Крок 6, Робота зі сторінками
насамперед потрібно визначити, як знайти наступну сторінку. На сайті Nettuts + про номер сторінки дуже легко здогадатися по URL, але нам потрібно отримувати посилання в парсінгу.

Якщо подивитися на HTML, то можна знайти наступне:
Потім ми присвоюємо посилання HREF змінної $ URL. Це важливо, тому, що далі ми видаляємо об'єкт HTML. Щоб запобігти витоку пам'яті в php5, поточний об'єкт simple_html_dom має бути очищений і разустановлен перш ніж інший об'єкт буде створений. Якщо цього не зробити, то вся доступна пам'ять може бути поглинена.
На завершення ми викликаємо функцію getArticles з URL наступної сторінки. Рекурсія переривається, коли не залишається сторінок для парсинга.
Крок 7. Висновок результатів
Перше, ми збираємося встановити кілька основних стилів. Все абсолютно довільно - ви можете встановлювати те, що подобається.

Потім ми пишемо маленьку функцію на PHP в сторінці для виведення попередньо збереженої інформації.
Остаточний результат - це одна сторінка HTML зі списком всіх статей зі сторінок Nettuts +, починаючи з тієї, яка була вказана в першому виклику getArticles ().
Крок 8. Висновок
Якщо Ви запускаєте парсинг для великої кількості сторінок (скажімо, весь сайт), то це може забрати багато часу. На такому сайті як Nettuts +, який має більш 86страніц, процес парсинга може тривати більше хвилини.
Даний урок відкриває для вас тему парсинга HTML. Існують інші методи методи роботи з DOM, які дозволяють працювати з селектором xpath для пошуку елементів. Описана в даному уроці бібліотека проста для використання і відмінно підходить для швидкого старту. Пам'ятайте, що потрібно питати дозволу, перш проводити скрепінг сайту.
5 останніх уроків рубрики "PHP"
Коли мова йде про безпеку веб-сайту, то фраза "фільтруйте все, екрануйте все" завжди буде актуальна. Сьогодні поговоримо про фільтрації даних.
Expressive 2 підтримує можливість підключення інших ZF компонент за спеціальною схемою. Не всім подобається це рішення. У цій статті ми розповімо як поліпшили процес підключення декількох модулів.
Припустимо, що вам необхідно відправити якусь інформацію в Google Analytics з серверного скрипта. Як це зробити. Відповідь в цій замітці.
Підбірка з декількох видів PHP пісочниць. На деяких ви в режимі online зможете потестить свій код, але є так само рішення, які можна впровадити на свій сайт.

За рахунок отримання інформації відразу по двох каналах (зір і слух) ефективність навчання значно перевершує навчання по книгах. А домашні завдання і онлайн-тести дозволять вам постійно думати на мові, що вивчається і відразу перевіряти свої знання!


Якщо ви давно хочете як слід вивчити HTML, то у мене для Вас є чудова новина!

Якщо ви вже вивчили HTML і хочете рухатися далі, то наступним кроком буде вивчення технології CSS.

Якщо ви хочете розібратися з поняттями домену і хостингу, навчитися створювати бази даних, закачувати файли сайту на сервер по FTP, створювати піддомени, налаштовувати поштові скриньки для свого сайту і стежити за його відвідуваністю, то цей курс створений спеціально для вас!