Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия | |||
|
siteparser [2022/02/06 00:19] a1 удалено |
— (текущий) | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Использование ====== | ||
| - | <code php> | ||
| - | /* | ||
| - | Работа с классом достаточно проста, хоть и кажется сложной с первого взляда. | ||
| - | |||
| - | класс циклически переходит по ссылкам в пределах хоста начиная с указаной в аргументе функции parse(). | ||
| - | Ссылки выбираются только те, что соответствуют правилам перехода: | ||
| - | urlAllow, urlAllowRegexp, urlDenyAllow, urlDenyRegexp. | ||
| - | Для каждой страницы сайта создается объект mlq и вызывается функция указаная в аргументе handler(). | ||
| - | |||
| - | */ | ||
| - | |||
| - | include('./lib/ml.php'); //подключаем класс mlq | ||
| - | include('./lib/parser.php'); //подключаем класс site_parser | ||
| - | |||
| - | function myfunction($parser) { | ||
| - | echo $parser->host; //текущий хост | ||
| - | echo $parser->url; //текущий url | ||
| - | $ml = $parser->ml; //объект ml для данной страницы | ||
| - | |||
| - | //делаем выборку элементов см. mlq | ||
| - | $titile = $ml->select('h1')->text(); | ||
| - | $src = $ml->select('img')->attr('src'); | ||
| - | |||
| - | $parser->csv_set('title',$title); //записываем строку в csv | ||
| - | $image = $parser->download($src,'images'); //Скачивает файл по ссылке в папку images. Возвращает имя файла в папке | ||
| - | $parser->csv_set('image', $image); //записываем строку в csv | ||
| - | |||
| - | $parser->csv_next(); //следующая строка csv. необязательно вызывать, если один вызов функции обрабатывает одну строку csv | ||
| - | return true; | ||
| - | } | ||
| - | |||
| - | $parser = new site_parser(); | ||
| - | $parser->handler('myfunction'); //функция вызываемая каждый раз для обработки страницы | ||
| - | $parser->set_codepage('cp1251'); //кодировка сайта | ||
| - | |||
| - | $parser->urlAllow('/product/si'); //разрешенные url | ||
| - | $parser->urlAllowRegexp('/product/si'); //разрешенные url regexp | ||
| - | $parser->urlDeny('/product/'); //запрещенные url regexp | ||
| - | $parser->urlDenyRegexp('/product/si'); //запрещенные url regexp | ||
| - | |||
| - | $parser->parse('http://www.site.ru','/path/to/start'); //запуск парсинга с данной страницы | ||
| - | $parser->csv_save('items.csv'); //сохраняем csv в items.csv | ||
| - | </code> | ||
| - | ====== Методы ====== | ||
| - | Основные функции | ||
| - | |||
| - | void set_codepage(string codepage) - выбор кодировки сайта | ||
| - | |||
| - | void parse_page(string host, string url) - парсинг страницы сайта ссылка на который указана в аргументах | ||
| - | |||
| - | Функции циклического парсинга | ||
| - | |||
| - | void handler(function handler) - выбор функции вызываемой при циклическом парсинге | ||
| - | |||
| - | void parse(string host, string url) - циклический парсинг сайта начиная от ссылки указаной в аргументах | ||
| - | |||
| - | |||
| - | Функции правил перехода по ссылкам | ||
| - | |||
| - | void urlAllow(string query) - переход осуществляется только по ссылкам, содержащим строку query | ||
| - | |||
| - | void urlAllowRegexp(string query) - переход осуществляется только по ссылкам, совпадающим с шаблоном regexp query | ||
| - | разрешающие правила объединяются по логической схеме ИЛИ. Если не указано ни одно из правил, то переход происходит по любой ссылке. | ||
| - | |||
| - | void urlDeny(string query) - запрет перехода по ссылкам, содержащим строку query | ||
| - | |||
| - | void urlDenyRegexp(string query) - запрет перехода по ссылкам, совпадающим с шаблоном regexp query | ||
| - | запрещающие правила объединяются по логической схеме ИЛИ и имеют больший приоритет чем разрешающие. | ||
| - | |||
| - | urlReplaceRegexp(string from,string to) - заменяет символы в строке по паттерну | ||
| - | |||
| - | Вспомогательные функции | ||
| - | |||
| - | string download(string url, string folder[, boolean noconflict=true]) - Скачивает файл ссылке url в папку folder. Возвращает локальное имя файла или false в случае ошибки. Если значение noconflict - true записываемое имя файла будет соответствовать хешу ссылки на него. Если файл уже присутствует в папке - функция возвращает его имя не скачивая его. | ||
| - | |||
| - | Функции работы с csv | ||
| - | |||
| - | void function csv_set(string title, string value) - запись значения value для поля title | ||
| - | |||
| - | void function csv_next() - переход к следующей строке csv | ||
| - | |||
| - | void function csv_save(string filename) - сохранение csv в файл filename | ||
| - | |||