PHP-парсинг данных с HTML-страницы. Как реализовать с SimpleHTMLDOM или аналогом?

Здравствуйте, необходимо парсить URL с целью получения данных и помещения их в массив. Данные на странице периодически обновляются, есть триггер по которому запускать скрипт для парсинга и помещения полученных данных в БД. Хотелось бы увидеть примеры и советы по правильному парсингу. Заранее благодарен.

Структура необходимого блока:

<section class="SECTION_CLASS">
<div class="container">
<changelists>
<changelist>
<version>VER</version>
<information>DATE</information>
<ul>
<li><changetype class="CLASS_A">new</changetype><p> CHANGED</p></li>
<li><changetype class="CLASS_B">removed</changetype><p> REMOVED</p></li>
...
</ul>
</changelist>
...
</changelists>
</div>
</section>
  • Вопрос задан
  • 4323 просмотра
Пригласить эксперта
Ответы на вопрос 1
@matperez
Вы что-то пробовали уже? В принципе примера со страницы проекта должно быть достаточно
// Дергаете страницу
$html = file_get_html('http://slashdot.org/');

// Находите информацию по селектору CSS
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);


find('селектор') вернет все найденные элементы попадающие под селектор в виде массива. это подходит для элементов типа changelists -> changelist.
find('селектор', 0) вернет первый попавшийся элемент - его нужно использовать, если знаете что он один. это подходит для элементов типа changelist -> version или changelist -> infofmation.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
26 апр. 2024, в 10:21
1200 руб./в час
26 апр. 2024, в 10:10
1000 руб./за проект