В названии диплома все же не хватает слова "Разработка универсального парсера
сайтов на языке PHP".
И слово "универсальный" думаю окажется лишним )
Литературу на эту тему вряд ли найдете, статьи разрознены и разного качества. Ищите пробуйте. Очень рекомендую попробовать написать несколько парсеров на других языках. Посмотрите как работает библиотека Grаb для Python. Ее принципы можно перенести для PHP.
Немного общей инфы по теме
В целом парсинг сайтов состоит из примерно следующих этапов:
- Анализ сайта: определение структуры сайта и шаблона данных и, на этом этапе полезным бывает изучить файл роботс, xml карту сайта, поиск по сайту, выдачу поисковиков для сайта.
- Подготовка выражений (xpath или css селекторв) для получения необходимых данных со страниц.
- Написание и отладка парсера.
Сам парсер может состоять из следующих частей:
- Краулер. Используя какие то правила проходит по страницам, собирает ссылки, может отправлять страницы сразу на парсинг (в очередь на парсинг) или просто выгружать и сохранять их целиком.
- Парсеры. Блоки отвечающие за вытаскивание конкретных данных и их преобразование в нужный формат.
- Вспомогательные сервисы, отвечают за разбор HTML DOM, кеширование, HTTP запросы, обход защиты от парсинга, сохранение данных в нужном формате и тп.
Для разбора HTML используются библиотеки (пример
https://github.com/Imangazaliev/DiDOM ). Регулярками HTML не разбирают, но тоже, конечно применяют для разбора других данных.
Иногда требуется исполнять JS, например с помощью PhantomJS.
Для обхода капчи прибегают к услугам сервесов типа антигейт / антикапча.
Порой требуется авторизовываться или обходить защиту построенную на cookies.
Для многопоточного парсинга используют multicurl.
Вообще PHP не самый подходящий язык для парсинга сайтов. Все таки он предназначен для других целей. Python + Grab здесь будет куда удобнее и производительнее. Как, впрочем почти любой десктопный язык имеющий нужные библиотеки.