- Хроники. - -

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

Posted By Ikutsin On 11 ноября 2009 @ 1:25 In HTML, AJAX, JS & CSS,Как?,Лаборатория | Comments Disabled

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

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

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

1. firebug и greasemonkey

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

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

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

Первый раз я встретил это чудо во время обновления своей WordPress. Это была кнопка «опубликовать это», которая перекидывает мой блог со скопированным адресом текущей страницы. Есть отличная подборка Букмарклетов для разработчиков [3] среди которых есть 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++ и создаем макрос, для сбора данных в нужный формат. Вот и все.


Article printed from Хроники.:

URL to article: /1112-javascript-shel-shell-v-kontekste-issleduemoj-stranicy

URLs in this post:

[1] Image: /wp-content/uploads/2009/11/firefox_logo.jpg

[2] Букмарклет: http://ru.wikipedia.org/wiki/%D0%91%D1%83%D0%BA%D0%BC%D0%B0%D1%80%D0%BA%D0%BB%D0%B5%D1%82

[3] отличная подборка Букмарклетов для разработчиков: https://www.squarefree.com/bookmarklets/webdevel.html

Copyright © 2008 Все, что меня окружает. All rights reserved.