Питання Як ви проаналізуєте та обробляєте HTML / XML у PHP?


Як можна проаналізувати HTML / XML і витягувати з нього інформацію?


1896
2017-08-26 17:19


походження




Відповіді:


Власні розширення XML

Я вважаю за краще використовувати одну з них внутрішні розширення XML оскільки вони поставляються в комплекті з PHP, зазвичай вони перевищують всі 3-ї сторонні ліберали і дають мені все необхідне для контролю над розміткою.

DOM

Розширення DOM дозволяє працювати з XML-документами через DOM-інтерфейс з PHP 5. Це реалізація Model Object Model Core Level 3 для документів W3C, інтерфейсу платформи та інтерфейсу, вільного від мови, що дозволяє програмам та сценаріям динамічно отримувати доступ і оновлювати зміст, структура та стиль документів.

DOM здатний аналізувати та змінювати реальний світ (зламаний) HTML, і це може зробити Запити XPath. Вона заснована на libxml.

Потрібен якийсь час, щоб отримати продуктивність з DOM, але цей час цілком коштує IMO. Оскільки DOM є мовно-агностичним інтерфейсом, ви знайдете реалізацію на багатьох мовах, отже, якщо вам потрібно буде змінити мову програмування, можливо, ви вже знатимете, як потім використовувати DOM API цієї мови.

Основний приклад використання можна знайти в Знімання атрибута href елемента A і загальний концептуальний огляд можна знайти на DOMDocument у php

Як використовувати розширення DOM було широко висвітлено в StackOverflow, тому, якщо ви вирішите його використовувати, ви можете бути впевнені, що більшість проблем, з якими ви стикаєтеся, можуть бути вирішені шляхом пошуку / перегляду переповнення стека.

XMLReader

Розширення XMLReader - синтаксичний аналізатор XML. Читач виступає як курсор, що рухається вперед по потоку документів і зупиняється в кожному вузлі на шляху.

XMLReader, як і DOM, заснований на libxml. Я не знаю, як запустити модуль HTML-аналізатора, тому, можливо, використання XMLReader для розбору зламаного HTML може бути менш надійним, ніж використання DOM, де ви можете чітко сказати, що він використовує HTML Parser Module libxml.

Основний приклад використання можна знайти на отримання всіх значень з тегів h1 за допомогою php

XML-аналізатор

Це розширення дозволяє створювати парсер XML, а потім визначати обробники для різних подій XML. Кожен аналізатор XML також має кілька параметрів, які можна налаштувати.

Бібліотека XML Parser також заснована на libxml і реалізує a SAX Стиль XML push parser. Це може бути кращим вибором для керування пам'яттю, ніж DOM або SimpleXML, але працювати буде складніше, ніж сигнал-аналізатор, реалізований XMLReader.

SimpleXml

Розширення SimpleXML надає дуже простий і легко використовується набір інструментів для перетворення XML у об'єкт, який може оброблятися з використанням звичайних селекторів властивостей та ітераторів масиву.

SimpleXML - це варіант, коли ви знаєте, що HTML правильний XHTML. Якщо вам потрібно проаналізувати розбитий HTML, не розглядайте навіть SimpleXml, оскільки він буде задихатись.

Основний приклад використання можна знайти на Проста програма для вузла CRUD і значення вузлів у файлі XML і є безліч додаткових прикладів у посібнику PHP.


3-ї бібліотеки (на основі libxml)

Якщо ви вважаєте за краще використовувати сторонню програму lib, я б запропонував використовувати lib, який насправді використовується DOM/libxml під ним, замість аналізу рядків.

FluentDom

FluentDOM надає безкоштовний XML-інтерфейс для DOMDocument у PHP. Селектори записуються в XPath або CSS (використовуючи перетворювач CSS для XPath). Поточні версії розширюють стандартні інтерфейси, що реалізують DOM, і додають функції з DOM Living Standard. FluentDOM може завантажувати такі формати, як JSON, CSV, JsonML, RabbitFish та інші. Може бути встановлений через Composer.

HtmlPageDom

Wa72 \ HtmlPageDom` - це бібліотека PHP для легкої маніпуляції HTML   потрібні документи DomCrawler від Symfony2   компоненти для переміщення   ДОМ і розширює його, додавши методи маніпулювання DOM   дерево HTML-документів.

phpQuery (не оновлюється протягом багатьох років)

phpQuery - це серверний, цілеспрямований, CSS3, керований за допомогою селекторної моделі Document Object Model (DOM) API, заснований на бібліотеці jQuery JavaScript, написаний на PHP5, і забезпечує додатковий інтерфейс командного рядка (CLI).

Також див .: https://github.com/electrolinux/phpquery

Zend_Dom

Zend_Dom надає інструменти для роботи з документами та структурами DOM. В даний час ми пропонуємо Zend_Dom_Query, яка забезпечує уніфікований інтерфейс для запиту документів DOM з використанням селекторів XPath і CSS.

QueryPath

QueryPath - це бібліотека PHP для роботи з XML та HTML. Він призначений для роботи не тільки з локальними файлами, але також з веб-службами та ресурсами бази даних. Він реалізує велику частину інтерфейсу jQuery (у тому числі селектори стилів CSS), але він дуже настроюється для використання на серверній частині. Може бути встановлений через Composer.

fDOMDocument

Файл fDOMDocument розширює стандартний DOM для використання винятків у всіх випадках помилок замість попереджень або повідомлень PHP. Вони також додають різні зручні методи та ярлики для зручності та спрощення використання DOM.

шабля / xml

saber / xml - це бібліотека, яка обгортає та розширює класи XMLReader і XMLWriter для створення простої системи відображення та дизайну "xml to object / array". Написання та читання XML є однопрохідним, тому може бути швидким і вимагати низької пам'яті на великих файлах XML.

FluidXML

FluidXML - це бібліотека PHP для маніпуляції XML із стислим та вільним API.   Він використовує XPath і вільне програмне забезпечення, щоб бути веселим та ефективним.


3-стороння (не на основі libxml)

Перевага побудови DOM / libxml полягає в тому, що ви отримуєте хорошу продуктивність поза полем, оскільки ви засновані на власному розширенні. Проте не всі треті сторонні ліби йдуть по цьому маршруту. Деякі з них наведено нижче

PHP Simple HTML DOM Parser

  • Аналізатор HTML DOM, написаний на PHP5 +, дозволяє маніпулювати HTML дуже простим способом!
  • Вимагати PHP 5+.
  • Підтримує неправильний HTML.
  • Знайдіть теги на HTML-сторінці за допомогою селекторів, як-от jQuery.
  • Витягувати вміст з HTML в одному рядку.

Я взагалі не рекомендую цей аналізатор. Блок коду є жахливим, і сам синтаксичний аналізатор досить повільний, і пам'ять голодний. Не всі селектори jQuery (такі як дитячі селектори) можливі. Будь-яка бібліотека на основі libxml повинна перевершувати це легко.

PHP Html Parser

PHPHtmlParser - це простий, гнучкий HTML-аналізатор, який дозволяє вибирати теги за допомогою будь-якого селектора CSS, як-от jQuery. Мета полягає в тому, щоб допомогти у розробці інструментів, які вимагають швидкого та простого способу зняття HTML-коду незалежно від того, чи є це дійсним чи ні! Цей проект був оригінальним за підтримки Sunra / php-simple-html-dom-parser, але підтримка, схоже, припинилася, тому цей проект є моєю адаптацією його попередньої роботи.

Знову ж таки, я не рекомендую цього аналізатора. Це досить повільно з високим використанням процесора. Також немає функцій очищення пам'яті створюваних об'єктів DOM. Ці проблеми масштабуються, зокрема, за допомогою вкладеного циклу. Сама документація є помилковим та помилковим, без відповіді на виправлення з 14 квітня 16.

Ганон

  • Універсальний токенизатор і HTML / XML / RSS DOM Parser      
    • Можливість маніпулювати елементами та їх атрибутами
    • Підтримує недійсний HTML та UTF8
  • Може виконувати розширені CSS3-подібні запити на елементи (наприклад, jQuery - підтримується простір імен)
  • Художник HTML (наприклад, HTML Tidy)      
    • Змініть CSS і Javascript
    • Сортувати атрибути, змінити регістр символів, правильне відступ тощо.
  • Розширюваний      
    • Розбір документів із використанням зворотних викликів на основі поточного символу / токена
    • Операції, розділені меншими функціями, полегшують роботу
  • Швидко і легко

Ніколи не користувався ним. Не можу сказати, чи це добре.


HTML 5

Ви можете використовувати вищенаведене для аналізу HTML5, але може бути примхи через розмітку HTML5 дозволяє. Так що для HTML5 ви хочете розглянути можливість використання спеціального аналізатора, наприклад

html5lib

Впровадження Python та PHP аналізатора HTML на основі специфікації WHATWG HTML5 для максимальної сумісності з основними веб-переглядачами на робочому столі.

Можливо, ви побачите більше спеціалізованих аналізаторів, коли HTML5 буде завершено. Існує також blogpost за назвою W3 Підказки для аналізу html 5 що варто перевірити.


WebServices

Якщо вам не подобається програмування PHP, ви також можете використовувати веб-служби. Взагалі, я виявив дуже мало корисності для них, але це тільки я і мої випадки використання.

YQL

Web-служба YQL дозволяє додаткам запитувати, фільтрувати та об'єднувати дані з різних джерел через Інтернет. Висловлювання YQL мають SQL-подібний синтаксис, знайомі будь-якому розробнику з досвідом роботи з базою даних.

ScraperWiki.

Зовнішній інтерфейс ScraperWiki дозволяє видобувати дані у формі, яку ви хочете використовувати в Інтернеті або у власних додатках. Ви також можете отримати інформацію про стан будь-якого скребка.


Регулярні вирази

Остання і Найменш рекомендований, ви можете отримати дані з HTML з регулярні вирази. Загалом, використання регулярних виразів на HTML не рекомендується.

Більшість фрагментів, які ви знайдете в Інтернеті, щоб відповідати розмірці, є крихкими. У більшості випадків вони працюють лише для певного фрагмента HTML. Змінні мінус-розмітки, наприклад додавання пробілу чи додавання або зміна атрибутів у тезі, можуть призвести до помилки RegEx, коли він не написано належним чином. Ви повинні знати, що ви робите перед використанням RegEx у форматі HTML.

HTML-аналізатори вже знають синтаксичні правила HTML. Регулярні вирази треба викладати для кожного нового RegEx, який ви пишете. RegEx чудово в деяких випадках, але це насправді залежить від вашого випадку використання.

ви Можна написати більш надійні аналізатори, але написання a повна та надійна Користувальницький синтаксичний аналізатор з регулярними виразами - це марна трата часу, коли вищезазначені бібліотеки вже існують і роблять набагато краще роботу над цим.

Також див Аналіз HTML-коду Шлях Ктулу


Книги

Якщо ви хочете витратити гроші, подивіться

Я не пов'язаний з PHP Architect або авторами.


1719
2017-08-26 17:18



@Naveed, що залежить від ваших потреб. Мені не потрібні запити для вибору CSS, тому я використовую DOM виключно з XPath. phpQuery має на меті бути портом jQuery. Zend_Dom є легким. Ви дійсно повинні перевірити їх, щоб побачити, який з них вам найбільше подобається. - Gordon
Ваша точка невикористання PHP Simple HTML DOM Parser виглядає сповнена. - Petah
Станом на 29 березня 2012 р. DOM не підтримує html5, XMLReader не підтримує HTML, а останнє зобов'язання на html5lib для PHP на вересень 2009. Що потрібно використовувати для аналізу HTML5, HTML4 та XHTML? - Shiplu Mokaddim
@Jimmy не містить нічого про cURL, оскільки cURL не є інструментом для аналізу та обробки HTML / XML з. cURL - це клієнт для різних мережевих протоколів. Наприклад, ви можете завантажити веб-сайти. Більшість вищезазначених бібліотек мають способи завантажувати віддалені URL-адреси безпосередньо, тому вам не потрібна CURL взагалі, наприклад, DOM loadHTMLFile(). - Gordon
@Наша я навмисно виключив ганебний звук Zalgo зі списку вище, оскільки він не надто корисний у своїй власній поведінці та призведе до того, що з моменту його написання був зроблений якийсь вантажний культ. Люди були скинуті з цією посиланням незалежно від того, наскільки це було б правильним, як регулярний вираз. Для більш збалансованої думки, будь ласка, перегляньте посилання I зробив Включіть замість цього і пройдіть коментарі на stackoverflow.com/questions/4245008/... - Gordon


Спробуй Простий HTML DOM-аналізатор

  • Синтаксичний аналізатор HTML DOM, написаний на PHP 5+, який дозволяє маніпулювати HTML дуже простим способом!
  • Вимагати PHP 5+.
  • Підтримує неправильний HTML.
  • Знайдіть теги на HTML-сторінці за допомогою селекторів, як-от jQuery.
  • Витягувати вміст з HTML в одному рядку.
  • Завантажити


Приклади:


Як отримати елементи HTML:

// Create DOM from URL or file
$html = file_get_html('http://www.example.com/');

// Find all images
foreach($html->find('img') as $element)
       echo $element->src . '<br>';

// Find all links
foreach($html->find('a') as $element)
       echo $element->href . '<br>';


Як змінити елементи HTML:

// Create DOM from string
$html = str_get_html('<div id="hello">Hello</div><div id="world">World</div>');

$html->find('div', 1)->class = 'bar';

$html->find('div[id=hello]', 0)->innertext = 'foo';

echo $html;


Витяг вмісту з HTML:

// Dump contents (without tags) from HTML
echo file_get_html('http://www.google.com/')->plaintext;


Скребковий Slashdot:

// Create DOM from URL
$html = file_get_html('http://slashdot.org/');

// Find all article blocks
foreach($html->find('div.article') as $article) {
    $item['title']     = $article->find('div.title', 0)->plaintext;
    $item['intro']    = $article->find('div.intro', 0)->plaintext;
    $item['details'] = $article->find('div.details', 0)->plaintext;
    $articles[] = $item;
}

print_r($articles);

303
2017-11-26 20:02



Ну, по-перше, є такі речі, які мені потрібно підготувати до коду поганого DOM, Invlid, а також js, який аналізує двигун DNSBL, це також буде використано для пошуку шкідливих сайтів / вмісту, також, як я створив свій сайт навколо структури i побудували, він повинен бути чистим, зрозумілим і добре структурованим. SimpleDim чудово, але код трохи брудний - RobertPitt
@ Роберт ви також можете перевірити htmlpurifier.org для речей, пов'язаних із безпекою. - Gordon
Він має одну дійсну точку: простоюHTMLDOM важко розширити, якщо ви не використовуєте шаблон декоратора, який я вважаю громіздким. Я знайшов себе здригати просто внесення змін в основний клас (и) самих себе. - Erik
Те, що я зробив, запустив моє HTML через охайну перед відправкою його в SimpleDOM. - MB34
Я використовую це в даний час, виконуючи його як частину проекту для обробки декількох сотень URL-адрес. Це стає дуже повільним, і постійні таймаути зберігаються. Це чудовий сценарій для початківців та інтуїтивно простий у вивченні, але надто базовий для більш розвинутих проектів. - luke_mclachlan


Просто використовуй DOMDocument-> loadHTML () і буде зроблено з цим. Алгоритм HTML-аналізу HTML-коду libxml є досить гарним і швидким, і, на відміну від поширеної думки, не затулягає неправильний HTML-код.


224
2017-11-15 22:16



Правда І це працює з PHP вбудованими XPath і XSLTProcessor класів, які відмінно підходять для вилучення вмісту. - Kornel
Для дійсно викраденого HTML, ви завжди можете запустити його через htmltidy, перш ніж передавати його до DOM. Кожного разу, коли мені потрібно скобити дані з HTML, я завжди використовую DOM або, принаймні, simplexml. - Frank Farmer
Інша справа при завантаженні неправильного HTML i полягає в тому, що, можливо, було б мудрим викликати libxml_use_internal_errors (true), щоб запобігти застереженням, яке зупинить розбір. - Husky
Я використав DOMDocument для аналізу близько 1000 джерел HTML (в різних мовах, кодованих різними кодами) без будь-яких проблем. Ви можете зіткнутися з проблемами кодування, але вони не є непереборними. Вам потрібно знати 3 речі: 1) loadHTML використовує набір символів метатегів для визначення кодування 2) №2 може призвести до неправильного виявлення кодування, якщо вміст html не включає цю інформацію 3) погані символи UTF-8 можуть припинити аналізатор. У таких випадках використовуйте комбінацію символів mb_detect_encoding () та Simplepie RSS Parser для кодування / перетворення / видалення небажаного коду символів UTF-8 для обходу. - Zero
DOM насправді підтримує XPath, подивіться на це DOMXPath. - Ryan McCue


Чому ти не повинен і коли треба використовувати регулярні вирази?

По-перше, загальний неправильний термін: Regexps не для "синтаксичний аналіз" HTML Однак повторювані вирази можуть бути "екстракт" дані Витягують те, що вони зроблені. Основним недоліком витягування регулярних виразів HTML над правильними наборами інструментів SGML або базовими аналізаторами XML є їх синтаксичні зусилля та різноманітна надійність.

Розглянемо, що робимо кілька надійний регулярний витяг HTML:

<a\s+class="?playbutton\d?[^>]+id="(\d+)".+?    <a\s+class="[\w\s]*title
[\w\s]*"[^>]+href="(http://[^">]+)"[^>]*>([^<>]+)</a>.+?

є менш читабельним, ніж простий phpQuery або QueryPath еквівалент:

$div->find(".stationcool a")->attr("title");

Проте існують конкретні випадки використання, коли вони можуть допомогти.

  • Багато переходів через DOM не розкривають коментарів HTML <!--, які, однак, іноді є більш корисними якорями для видобутку. Зокрема варіанти псевдо-HTML <$var> або SGML залишки легко приручити з регулярними виразами.
  • Часто регулярні вирази можуть зберігати пост-обробку. Однак об'єкти HTML часто потребують ручного оповіщення.
  • І, нарешті, для еxtremely нескладні завдання як видобуток <img src = urls, вони насправді є ймовірним інструментом. Перевага швидкості над аналізаторами SGML / XML в основному просто починає грати за цими самими основними процедурами вилучення.

Іноді навіть доцільно попередньо витягти фрагмент HTML за допомогою регулярних виразів /<!--CONTENT-->(.+?)<!--END-->/і обробляють залишок за допомогою простішого інтерфейсу HTML parser.

Примітка: У мене насправді є це додаток, де я аналогічно використовую розбір XML і регулярні вирази. Просто минулого тижня розбив PyQuery, і регулярний вираз все ще працював. Так дивно, і я сама не можу це пояснити. Але так сталося.
Тому, будь ласка, не проголосуйте за реальні міркування, тільки тому, що це не відповідає regex = evil meme. Але давайте також не проголосуємо цим занадто багато. Це просто синтайт для цієї теми.


136
2018-05-01 02:04



DOMComment може читати коментарі, тому немає причин використовувати Regex для цього. - Gordon
Ні набори інструментів SGML, ні XML-аналізатори не підходять для аналізу реального HTML-коду. Для цього підходить тільки спеціальний аналізатор HTML. - Alohci
@Alohci DOM використовує libxml і libxml має окремий аналізатор HTML модуль, який буде використовуватися при завантаженні HTML з loadHTML() так що це може дуже сильно завантажувати "реальний" (читати зламані) HTML. - Gordon
Ну, просто коментар щодо вашої точки зору "в реальному світі". Звичайно, при аналізі HTML є корисні ситуації для Regex. І є також корисні ситуації для використання GOTO. І є корисні ситуації для змінних змінних. Отже, ніяка конкретна реалізація не є остаточним кодуванням для його використання. Але це дуже сильний попереджувальний знак. І середній розробник, імовірно, не буде достатньо нюансів, щоб повідомити про різницю. Як правило, Regex GOTO і змінні-змінні - це все зло. Є не злі вживання, але це виключення (і рідкісні) ... (IMHO) - ircmaxell
@mario: Насправді, HTML може бути "належним чином" проаналізовано, використовуючи регулярні вирази, хоча зазвичай це вимагає кількох з них, щоб зробити чесну роботу титчем. Це просто королівський біль у загальному випадку. У конкретних випадках з чітко визначеним входом він стає тривіальним. Це випадки, коли люди повинен використовувати регулярні вирази Великі старі голодні важкі аналізатори - це насправді те, що вам потрібно для загальних випадків, хоча звичайному користувачеві не завжди зрозуміло, де слід малювати цю лінію. Будь-який код простіше і простіше, виграє. - tchrist


phpQuery і QueryPath є надзвичайно подібними у відтворенні вільного jQuery API. Ось чому вони - два з найпростіших підходів правильно розібрати HTML у PHP.

Приклади для QueryPath

В основному спочатку створіть дерево запитуваного DOM з рядка HTML:

 $qp = qp("<html><body><h1>title</h1>..."); // or give filename or URL

Отриманий об'єкт містить повне представлення дерева HTML-документа. Його можна пройти за допомогою методів DOM. Але загальний підхід полягає у використанні селекторів CSS, як у jQuery:

 $qp->find("div.classname")->children()->...;

 foreach ($qp->find("p img") as $img) {
     print qp($img)->attr("src");
 }

В основному ви хочете використовувати прості #id і .class або DIV теги для ->find(). Але ви також можете використовувати XPath заяви, які іноді бувають швидше. Також типові методи jQuery типу ->children() і ->text() і особливо ->attr() спрощуйте витягування правильних фрагментів HTML. (І вже декодування SGML об'єктів).

 $qp->xpath("//div/p[1]");  // get first paragraph in a div

QueryPath також дозволяє вставляти нові теги у потік (->append), а пізніше виведіть і оновіть оновлений документ (->writeHTML) Він може не тільки аналізувати помилковий HTML, але також різні діалоги XML (з просторами імен) і навіть витягати дані з HTML-мікроформатів (XFN, vCard).

 $qp->find("a[target=_blank]")->toggleClass("usability-blunder");

.

phpQuery або QueryPath?

Зазвичай QueryPath краще підходить для маніпулювання документами. Хоча phpQuery також реалізує кілька методів псевдо AJAX (лише HTTP-запити), щоб вони більше нагадували jQuery. Кажуть, що phpQuery часто буває швидше, ніж QueryPath (через меншу кількість загальних функцій).

Додаткову інформацію про відмінності див це порівняння на backback машині від tagbyte.org. (Оригінальне джерело пропало без вісті, так що це посилання на інтернет-архів. Так, ви все ще можете знайти відсутні сторінки, люди.)

І ось тут комплексне введення QueryPath.

Переваги

  • Простота та надійність
  • Прості у використанні альтернативи ->find("a img, a object, div a")
  • Належні дані, що відганяють (у порівнянні з grepping регулярними виразами)

126
2017-08-26 17:20





Простий HTML DOM - це чудовий аналізатор з відкритим кодом:

simplehtmldom.sourceforge

Він обробляє елементи DOM об'єктно-орієнтованим способом, і нова ітерація має багато покриття для несумісного коду. Є також деякі чудові функції, як ви бачите в JavaScript, наприклад функція "find", яка поверне всі екземпляри елементів цього імені тегу.

Я використав це в ряді інструментів, протестувавши його на різних типах веб-сторінок, і я думаю, що це чудово працює.


85
2017-10-04 13:14





Один загальний підхід, який я не бачив тут, - це запустити HTML через Охайно, який може бути встановлений для виключення гарантовано-дійсного XHTML. Тоді ви можете використовувати будь-яку стару бібліотеку XML на ньому.

Але до вашої конкретної проблеми слід поглянути на цей проект: http://fivefilters.org/content-only/ - це модифікована версія Читабельність алгоритм, який призначений для вилучення лише з текстового вмісту (а не заголовків і нижніх колонтитулів) з сторінки.


58
2017-11-06 21:02





Для 1а та 2: я б проголосував за новий клас Symfony Componet DOMCrawler ( DomCrawler ) Цей клас дозволяє виконувати запити, схожі на CSS Selectors. Погляньте на цю презентацію на реальні приклади: news-of-the-symfony2-world.

Компонент призначений для роботи в автономному режимі та може бути використаний без Symfony.

Єдиний недолік полягає в тому, що він буде працювати тільки з PHP 5.3 або новіший.


54
2018-04-14 19:08



Jquery-подібні запити css добре сказано, тому що є деякі речі, які відсутні в документації w3c, але присутні як додаткові функції у jquery. - Nikola Petkanski


Це зазвичай називають скребок екрану, до речі. Бібліотека, яку я використовував для цього, є Простий HTML Dom Parser.


51
2018-01-05 14:49



Не суворо правда (en.wikipedia.org/wiki/Screen_scraping#Screen_scraping) Ключ у "екран"; у описаному випадку немає екрану. Хоча, за загальним визнанням, цей термін зазнав жахливого недавнього зловживання. - Bobby Jack
Я не скрипить екран, вміст, який буде проаналізовано, буде дозволено постачальником контенту за моєю угодою. - RobertPitt


Ми заздалегідь створили досить багато сканерів для наших потреб. Наприкінці дня, як правило, це прості регулярні вирази, які роблять найкраще. Хоча бібліотеки, перелічені вище, є добрими з причини їх створення, якщо ви знаєте, що шукаєте, регулярні вирази - це безпечніший спосіб піти, тому що ви можете також вчинити недійсними HTML/XHTML структури, які можуть вийти з ладу, якщо їх буде завантажено через більшість аналізаторів.


40
2018-04-15 13:12





я рекомендую PHP Simple HTML DOM Parser.

Це дійсно має чудові функції, такі як:

foreach($html->find('img') as $element)
       echo $element->src . '<br>';

37
2017-11-15 22:24