Поиск по блогу

вторник, 23 марта 2010 г.

Вопросы-ответы

Вдогонку к предыдущему посту (и отвечая на вопрос, заданный по почте):

Чтобы просмотреть в Google Chrome код страницы (например, xml, сгенерированного с помощью php), нужно написать в адресной строке префикс "view-source:". Например:
view-source:http://site.ru/xml.php?id=262.

Пользуясь случаем, скажу вот еще что: уважаемые читатели блога, я получаю от вас на почту много писем с вопросами. Нет, если вам, конечно, хочется задать вопрос — задавайте. Но неплохо было бы перед этим хотя бы поискать ответ в интернете. Вопросы порой бывают очень банальными, а времени у меня не безмерная куча, и тратить его хочется все-таки с какой-никакой, но пользой.

Могу порекомендовать сервис вопросов-ответов help.sander.su, о котором уже недавно упоминала в комментариях к одному из сообщений. Я буду перенаправлять туда вопросы, с решением которых сама не сталкивалась и на разбор которых нет времени. И, соответственно, отвечать там на те, с которыми сталкивалась :)

Польза от исследования кода в разных браузерах

Поделюсь наблюдением: не следует забывать про разные браузеры на этапе исследования кода страницы. Иногда может случиться так, что обход косяков IE, который вебмастеру приходится отдельно предусматривать, может натолкнуть на решение вашей проблемы.

Пример: требуется скачивать видео-ролики с сайта со встроенным плеером. Плеер самописный, прямой ссылки на проигрываемый файл в коде страницы нет.

Пример страницы: http://med-edu.ru/basic-science/biohim/shnol1/262. При клике на заставку открывается плеер, в котором можно посмотреть и видео, и слайды презентации:

parsing video

В Goodle Chrome находим javascript-функцию, отвечающую за показ видео. Не очень очевидно, не правда ли? :)

function loadVideo() {

scroll(0,0);

darDiv.id = 'darkDiv';
newDiv.id = 'divVideo';
newDivCont.id = 'contVideo';

document.body.appendChild(darDiv);
document.body.appendChild(newDiv);
newDiv.appendChild(newDivCont);

so = new SWFObject("/pl/player7v_n_api_y.swf", "sotester", "1047", "711", "8", "0");
so.addVariable("xml_php", "/");
so.addVariable("php_seek", "http://www.medvideo.org/video/flvid/");
so.addVariable("id", "262");
so.addParam("scale", "noscale");
so.addParam("salign", "ct");
so.addParam("bgcolor", "#333333");
so.addParam("wmode", "transparent");
so.addParam("allowFullScreen", "true");
so.write("contVideo");
}


А вот как та же самая функция loadVideo выглядит в никем не любимом IE:

function loadVideo() {
scroll(0,0);
$("body").prepend('<div id="embedplayer" style="position: absolute; z-index: 99; top: 10px; width: 100%;" align="center">
<embed width="1047" height="711" flashvars="xml_php=/xml.php?id=262&amp;php_seek="
allowfullscreen="true" wmode="transparent" salign="ct" scale="noscale" quality="high" bgcolor="#333333" name="video" id="123" style=""
src="/pl/player7v_n_api_y.swf" type="application/x-shockwave-flash" base="/"/></div>');
$("body").prepend('<div id="darklayer" style="position: absolute; z-index: 98; width: 100%; height: 1300px;
background: none repeat scroll 0 0 #444444; filter:alpha(opacity=60); -moz-opacity: 0.6; opacity: 0.6;"></div>');
}


Итак, стало все намного очевиднее, flashvars открывают завесу тайны :)

Заходим по ссылке http://med-edu.ru/xml.php?id=262 и видим:
parsing xml src video

То есть непосредственно нужный нам файл с видео имеет такой адрес:
http://www.medvideo.org/video/flvid/00000178.flv.

Ну и, соответственно, для скачивания других роликов с этого сервиса алгоритм определился:
- узнаем id видео (парсингом исходного кода страницы)
- загружаем xml.php?id=...
- парсим полученный xml и находим значение атрибута File.

Удачи в исследованиях! :)
___

Чтобы быть в курсе обновлений блога, можно подписаться на RSS.

среда, 10 марта 2010 г.

Пример парсинга вопросов с labs.wordtracker.com (Synapse, Delphi)

Сегодня выкроила время для углубленного изучения Synapse. Только, к сожалению, провела его не очень продуктивно.

Первым делом посмотрела наработки Сергея (либу IngHTTPSend), предложенные им в комментарии к моей первой статье о Synapse. Безусловно, у него в обертку включены очень полезные функции (в том числе уделено большое внимание кодировкам). Но у каждого программиста есть еще ряд функций, которые он таскает с собой в голове и дописывает к любым своим либам :) Например, у меня есть некоторые заморочки по поводу хэдеров запросов. Я обычно создаю несколько функций для формирования заголовков с одинаковым названием, но с разным набором входных параметров. Например, в функцию может передаваться UserAgent, а может и не передаваться (если не передается, то берется случайный из списка возможных). Обработчики кодов ответа (в частности, 3XX) я тоже обычно выношу.

А потом пришла к выводу, что ни для чего "глубокомысленного" я сегодня не готова, глянула в списочек ссылок ресурсов, подходящих для демонстрации написания простейших парсеров, и решила поместить в блоге пример с кодом парсера вопросов с http://labs.wordtracker.com/keyword-questions/.
parsing keyword SEO questions from wordtracker

Ресурс Wordtracker.com я уже брала в качестве "подопытного" для иллюстрирования возможностей cURL.

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

Поделиться