Граббер с перекодировкой
Вторник, 2 ноября 2010 г.Рубрика: Вебмастеру -> Полезное
Метки: граббер | кодировка | контент
Подписаться на комментарии по RSS
Как то я уже писал про простой скрипт граббера который я использовал для вывода на паре своих сайтов программы телепередач основных центральных каналов на неделю. основа скрипта была взята с уроков по PHP с какого то блога года 2 назад. Так вот, тот сайт с которого граббер снимал программу, перестал её транслировать. Когда именно я не знаю, просто в очередной раз зайдя в раздел с телепрограммой, я увидел чистую страницу. Проверил урл сайта и там то же самое. Висит 2 ссылки и баннер.
Сегодня решил исправить ситуацию. Набрал в поиске Программа ТВ и в первой десятке нашёл один сайт который выдаёт то что мне нужно. Для корректной работы граббера нужно только вычислить от какого тега в коде страницы граббер будет брать контент и до какого тега выводить. Без этого будет выводиться вся страница - а это уже не так красиво и интересно как хочется. Теги которые будут ограничивать начало и конец кода страницы забираемого граббером я вычислил. Но возникла другая проблема - кодировка!
Сайт с которого я собрался тянуть ТВ программу в кодировке UTF-8 а сайты на которые граббер должен сливать контент в более старой кодировке win-1251. Значит нужно перекодировать на лету одну кодировку в другую (граббер простой и не использует кэширование). Насколько я помню, для этого используется функция mb_convert_encoding в которой указывается кодировка входящего потока и кодировка выходящего. Перед строкой вывода стянутого контента я поставил функцию перекодирования $content = mb_convert_encoding($content, "cp1251", "utf-8"); и всё стало нормально отображаться.
Если Вам понадобиться нечто подобное, можете воспользоваться готовым вариантом скрипта код которого я привожу ниже. Как сами видите, скрипт до ужаса простой, однако это не мешает ему отлично работать.
$content = file_get_contents("адрес страницы с которой будем брать контент");
$pos = strpos($content, "тег от которого граббер начнёт собирать контент");
$content = substr($content, $pos);
$pos = strpos($content, "тег до которого будем брать контент");
$content = substr($content, 0, $pos);
$content = mb_convert_encoding($content, "cp1251", "utf-8");
echo $content;
ADDITORIA агентство контекстной рекламы. Эффективные кампании в Директе, AdWords, в Бегуне. На сайте www.additoria.ru Вы найдете подробную информацию о том, как правильно организовать размещение рекламы в системах контекстной рекламы Яндекса, Google и Рамблера, и сможете отправить заявку на получение консультации по созданию и ведению кампании, а также заказать расчет бюджета Вашей контекстной рекламной кампании.
Комментариев: 2
а можно как нибудь отключить все ссылки которые выводятся в результате граба?
В принципе можно. Но придётся повозиться.