Граббер с перекодировкой

Вторник, 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

  1. 2011-10-06 в 21:44:46 | Евгений

    а можно как нибудь отключить все ссылки которые выводятся в результате граба?

  2. В принципе можно. Но придётся повозиться.

Оставьте комментарий!

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

Авторизация: Facebook.

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)