Зачем это может понадобится? Кроме передирания контента с чужого сайта можно решать менее аморальные задачи. Например можно сделать специализированный поисковик товаров по электронным магазинам со сравнительным выводом цен или собрать все объявления автомобильной тематики на одном ресурсе, или сделать сравнительную характеристику ипотечных кредитов по разным банкам, обновляемую автоматически, или… ну вобщем довольно интересный ресурс.
Допустим Вы придумали, какую сводную информацию хотите предоставить посетителю, переходим к технической части. В простейшем случае владелец ресурса предоставляет копию контента через RSS. В худшем случае необходимо анализировать сам html-файл.
В блогах некоторые авторы, для анализа html-файла, предлагают использовать регулярные выражения. Однако у этого метода есть свои недостатки. Во-первых регулярные выражения ничего не привязаны к структуре html-документа. Как следствие мы получаем более сложное выражение для извлечения нужной информации. Во-вторых синтаксис регулярных выражений не позволяет организовать циклы, вызов функций и т.д., как следствие их необходимо использовать в связке с каким-либо другим языком, что не увеличивает читабельность кода.
Для этих целей необходим мощный язык, как SQL-запросы для реляционных БД. Я выбрал XSLT – отличный функциональный язык (И это не только мое мнение), который позволяет сделать практически любое преобразование над xml-документом, а используемый в нем язык запросов XPath делает весь код во много раз лаконичнее, чем на других языках. Если уж кому-то все-таки не хватит базовой функциональности XSLT, то как libxslt, так и msxml позволяют его расширить. Позволяет это делать и PHP, как использующий libxslt.
Но есть одна проблема: html — это не xml, и даже xhtml — не xml. Получить из html xml можно с помощью библиотеки Tidy, которая портирована, как расширение, практически во все популярные языки и в PHP в том числе. Доступна она и в консольном режиме как команда tidy. Программистам PHP повезло ещё больше: класс DomDocument имеет метод loadHTML, который позволяет загружать непосредственно html-файл! Я не нашел, кто же все-таки реализовал такую удобную возможность: программисты PHP или разработчики libxml. За ссылки, раскрывающие эту тайну буду благодарен.
Обработка web-страницы с помощью xslt упрощается современной методикой верстки: все элементы относят к какому-нибудь классу, параметры отображения которого описывают в отдельном css-файле. Это позволяет извлекать данные простейшими XPath-запросами вида «//div[@class='classname']«.
И напоследок хочу помаролизовать, если на Вашем сайте размещена информация с чужих источников, то обязательно размещайте ссылку на них и сообщайте, что информация на Вашем сайте может быть устаревшей. А ещё лучше сразу позиционировать такие ресурсы как тематический поисковик или ресурс со сводной информацией, взятой из разных источников.