Картинка блога

firefox_logoДопустим, вам нужно содрать какие-то табличные (или не совсем табличные) данные со страницы. Но эти данные не совсем хорошо поддаются очистке, скажем, для конвертации в XML или CSV. Можно написать программу парсер, но это потребует дополнительное время. Легче просто запустить JavaScript, и с помощью JQuery достать все необходимые параметры.

Для того чтобы запустить свой JavaScript на любой странице сайта, совсем не обязательно скачивать страницу на диск. Есть большое количество инструментов сделать это прямо в окне браузера.

Я расскажу о своих исследованиях на примере получения идентификаторов станций, со всеми любимого moskva.fm.

1. firebug и greasemonkey

Эти инструменты знакомы всем продвинутым пользователям Firefox. В FireBug есть функция проверки переменных (типа watch), а greasemonkey позволяет запускать скрипты после загрузки страницы или по выбору специальных команд. greasmonkey API и написание собственных скриптов очень просто.

Для моих целей они подходят, но добавляют свои неудобства. Firebug может выполнить только одну строку, а запуск сткрипта greasmonkey довольно затянутый (изменить скрипт, сохранить, запустить посмотреть что на выходе).

2. bookmarklets — Букмарклет

Первый раз я встретил это чудо во время обновления своей WordPress. Это была кнопка «опубликовать это», которая перекидывает мой блог со скопированным адресом текущей страницы. Есть отличная подборка Букмарклетов для разработчиков среди которых есть Shell. Это именно то что надо. Shell открывается в новом окне, но запускает команды в контексте предка. Скрипт достаточно добавить в избранное, после чего его можно  использовать на любой странице.

3. Получение целевых данных.

Названия станций находятся в теге span, а идентификатор в части ссылки (a href) на трансляцию. Их объединяет тег li. Так как JQuery уже загружен на странице Ьoskva.fm, его можно использовать и нам. Скрипт получился следующим:

jQuery('li :has(span.h2)').each(function(el) {
print(jQuery('span.h2',this).text());
print(jQuery('a.button_item_play',this).attr('href').match(/\d+/))
});

Запускаем, получаем список. Копируем в notepad++ и создаем макрос, для сбора данных в нужный формат. Вот и все.

Метки:, ,

6 комментариев в “Javascript шел (shell) в контексте исследуемой страницы.”

  1. Для коллекции прогодится.

  2. можно сказать, это исключение 🙂 из правил

  3. Еще одно доказательство того, что мозилла рулит)

  4. Люблю мазилу

  5. лиса сила 🙂 !

  6. мозила всегда отличалась разнообразием дополнительных и приятных функций, и это еще одно доказательство этому!