Возникла задача перенести статьи со старого сайта на HTML, уже длительное время удаленного из Сети и попросту валяющегося на жестком диске, на CMS. С этой целью было решено спарсить статьи из HTML страниц в текстовые файлы, после чего импортировать их в базу данных.
Самым легким и быстрым решением оказалось написание PHP-скрипта.
Итак, как написать просто парсер HTML-страниц на PHP?
Надо отметить, что у старого HTML-сайта был очень чистый код, поэтому регулярное выражение для получения текста статьи оказалось очень простым:
$regex = '|<div id="site-content">(.*?)<\/div>|usim';
Далее необходимо указать путь к директории, где хранился старый HTML-сайт:
$dir = './html';
И записать список файлов в массив:
$files = array_diff(scandir($dir), array('..', '.'));
Затем перебираем массив с помощью конструкции foreach:
foreach ($files as &$file)
Получаем содержимое HTML-файла:
$content = file_get_contents (__DIR__ . '/html/'.$file);
Выдергиваем из него непосредственно текст статьи:
preg_match($regex, $content, $text);
И чистим его от HTML тегов, оставив только знаки абзаца:
$text = strip_tags($text[0], "");
Сохраняем в TXT-файл с тем же именем:
file_put_contents("txt/".$file.".txt", $text, LOCK_EX);
Весь скрипт простого парсера на PHP:
<?php
$regex = '|<div id="site-content">(.*?)<\/div>|usim';
$dir = './html';
$files = array_diff(scandir($dir), array('..', '.')); // убираем 2 пустых элемента
foreach ($files as &$file) {
$content = file_get_contents (__DIR__ . '/html/'.$file);
preg_match($regex, $content, $text);
$text = strip_tags($text[0], "<p>");
file_put_contents("txt/".$file.".txt", $text, LOCK_EX);
}
?>