Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> LWP::UserAgent with Javascript 
:(
    Опции темы
gcc
Дата 26.4.2008, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



чем такое реализовать? может есть модуль

нужно просто как бы зайти на страницу ботом, и чтобы бот "прочитал" (или "просто увидел") Javascript

не нашел, где-то видел что google  смотрит JS...


Это сообщение отредактировал(а) gcc - 26.4.2008, 23:21
PM WWW ICQ Skype GTalk Jabber   Вверх
KSURi
Дата 27.4.2008, 06:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Эм.. а в чем проблема? Получаете страницу, парсите как вам удобно, выуживаете JS из него.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
gcc
Дата 27.4.2008, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



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

когда вы заходиьте на страницу со своего браузера и когда там выполняеться JS код автоматически вы же ничего не клацаете и не парсите!!??

или как сделать? например wget не видет JS, ну так как на perl?


Я понятно выражаюсь, или что не понятно?



захожу с браузера:

я захожу на тсраницу и там віполняеться JS

захожу с wget или с LWP::UserAgent :
JS не выполняеться



как сделать чтобы выполнялся? 


или всетаки нужно пасить?
PM WWW ICQ Skype GTalk Jabber   Вверх
KSURi
Дата 27.4.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Цитата

Я понятно выражаюсь, или что не понятно?

Нет, вы выражаетесь не понятно, но я кажется все равно догадался. Надо было сразу написать, что что вы хотите выполнить JS средствами Perl, а не то, что "скрипт должен увидеть JS".
Посмотрите, думаю поможет.


Это сообщение отредактировал(а) KSURi - 27.4.2008, 12:42


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
nitr
Дата 27.4.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



gcc, или изучите данный скрипт, если сможете, думаю получится и разобраться что он делает, переделать это в perl.


--------------------
PM   Вверх
tolkien
Дата 27.4.2008, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



а что там должно было выполнится? редирект? 

PM MAIL   Вверх
Bulat
Дата 28.4.2008, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



не совсем понял smile

Как правило после запроса бота, идет ответ - разметка страницы вместе с выполненными js-скриптами. Можно ли выполнять их еще раз, да из зачем это нужно??


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
tolkien
Дата 28.4.2008, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



Цитата(Bulat @ 28.4.2008,  09:26)
не совсем понял smile

Как правило после запроса бота, идет ответ - разметка страницы вместе с выполненными js-скриптами. Можно ли выполнять их еще раз, да из зачем это нужно??

Уже выполнение js скриптов идет на серваке?
PM MAIL   Вверх
Bulat
Дата 28.4.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(tolkien @  28.4.2008,  11:30 Найти цитируемый пост)
Уже выполнение js скриптов идет на серваке? 


Насколько я помню из своего опыта написания ботов, бывали случаи когда приходилось что-то выполнять(генерить) средствами перла, то что делалось на странице через js и отправлять это. Как правило при пост-запросе. В случае с гет же, при запросе страницы разметка содержащая некоторые функции js, приходит с уже выполненными js-функциями и сценариями. Т.е. при работе с ботом, пришедшую разметку можно открыть в браузере, серьезных различий не будет. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
KSURi
Дата 28.4.2008, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Цитата(Bulat @  28.4.2008,  11:57 Найти цитируемый пост)
В случае с гет же, при запросе страницы разметка содержащая некоторые функции js, приходит с уже выполненными js-функциями и сценариями.

Эээ... смысл фразы в том, что при GET запросе JS выполняется на сервере? Надеюсь я не понял смысл)
JavaScript - это client-side технология и соответственно выполняется только на стороне клиента. При запросе и сохранении страницы в файл, если JS был внедрен непосредственно в разметку, вы не заметите разницы. Если же JS был вынесен в отдельный файл, то разницу вы заметите (за исключением случая, когда в ссылке на скрипт прописан абсолютный URL, тогда браузер подгрузит файл перед рендерингом и выполнит его).

Даже модули вроде JavaScript.pm скорее всего не позволят выполнять полноценный JS на стороне сервера, т.к. не реализуют (сам не проверял, но скорее всего так и есть) DOM.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
PanamOS
Дата 28.4.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



gcc, можно что-нибудь изобрести с WWW::Mechanize и WWW::Mechanize::Plugin::JavaScript. Где-то в англоязычном сегменте сети было что-то похожее на ваши требования.
KSURi, вроде реализуют DOM(модуль HTML::DOM и производные) JavaScript::SpiderMonkey и JE, но в любом случае все это добро будет работать не очень.

Как вариант решения задачи использовать ПО для автоматических тестов (что-то на подобие SAMIE, Selenium) и модули к нему на Perl'e соответственно. Или модули для взаимодействия с браузерами.

Это сообщение отредактировал(а) PanamOS - 28.4.2008, 20:56
PM MAIL   Вверх
Bulat
Дата 29.4.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(KSURi @  28.4.2008,  16:25 Найти цитируемый пост)
Эээ... смысл фразы в том, что при GET запросе JS выполняется на сервере? Надеюсь я не понял смысл)
JavaScript - это client-side технология и соответственно выполняется только на стороне клиента. При запросе и сохранении страницы в файл, если JS был внедрен непосредственно в разметку, вы не заметите разницы. Если же JS был вынесен в отдельный файл, то разницу вы заметите (за исключением случая, когда в ссылке на скрипт прописан абсолютный URL, тогда браузер подгрузит файл перед рендерингом и выполнит его).


Я не спорю. Но после того, как вы отправите http-запрос, а главное получив ответ, вы автоматически становитесь клиентом. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
KSURi
Дата 29.4.2008, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Это да, просто мне показалось, что вы имели ввиду что, что в контенте, который вы получите от сервера _уже_ будет результат выполнения JS, хотя выполнится он во время рендеринга страницы.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
Bulat
Дата 29.4.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(KSURi @  29.4.2008,  11:43 Найти цитируемый пост)
Это да, просто мне показалось, что вы имели ввиду что, что в контенте, который вы получите от сервера _уже_ будет результат выполнения JS, хотя выполнится он во время рендеринга страницы. 

Давно не занимался написанием ботов, но может содержать, а может и нет. Тут ведь все зависит не только от наличия самой js, но и от того, что она выполняет. smile

Добавлено через 49 секунд
Если быть совсем точным, бывает что данные и так на виду, в контенте, без выполнения самой js-функции smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
KSURi
Дата 29.4.2008, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Цитата(Bulat @  29.4.2008,  13:11 Найти цитируемый пост)
Давно не занимался написанием ботов, но может содержать, а может и нет.

Нет, не может. Интерпретатор JS - это браузер. Сервер высылает только исходный код, а браузер его выполняет.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
Bulat
Дата 29.4.2008, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(KSURi @  29.4.2008,  13:29 Найти цитируемый пост)
Нет, не может. Интерпретатор JS - это браузер. Сервер высылает только исходный код, а браузер его выполняет. 

Может. smile

Сам по себе js-не создает и не получает исходные данные. Он лишь может полученные данные изменить, что-то отобразить, что-то скрыть и т.п. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
tolkien
Дата 29.4.2008, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



Не может. Почему? Потому что если он выполняется на стороне сервера. Клиент не получает в ответе никакого javascript. Только результат. Сами подумайте что за абсурд. Выполнить код js на стороне сервера и потом его же с результатом вернуть клиенту. БРЕД.


PM MAIL   Вверх
KSURi
Дата 29.4.2008, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Bulat, ну я даже не знаю как еще объяснить...
Попробуйте ответить на вопрос: с помощью чего выполняется JS на стороне сервера?


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
shamber
Дата 30.4.2008, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

Репутация: 17
Всего: 18



Цитата(Bulat @  29.4.2008,  13:34 Найти цитируемый пост)
Сам по себе js-не создает и не получает исходные данные. Он лишь может полученные данные изменить, что-то отобразить, что-то скрыть и т.п. 


Это очень странное утверждение. Что мешает js отображать, к примеру числа от 1 до 10 не получая их с сервера? 
PM MAIL Jabber   Вверх
Bulat
Дата 30.4.2008, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



tolkienKSURi
Зайдем с другой стороны. JS - используют для представления, а не для логики. Вы используете js для того чтобы приконнектится к БД и получать данные, или может быть для того, чтобы считывать их из xml-конфигов?? Речь не о том, где выполняется js, а о том насколько это необходимо в случае с ботом. 

Вчера только расписал js-ку, которая скрывала и отображала группу чекбоксов. Но в независимости от того, выполняется у меня js в браузере или нет, данные по этим чекбоксам у меня уже присутствует в разметке. Конечно можно использовать js по всякому, но не стоит забывать о разделении логики и представления. smile

Цитата(shamber @  30.4.2008,  08:10 Найти цитируемый пост)
Это очень странное утверждение. Что мешает js отображать, к примеру числа от 1 до 10 не получая их с сервера?

Немного погярячился. smile Конечно можно что-то и генерить. Но это лишь представление, а не логика. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
KSURi
Дата 30.4.2008, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: 20
Всего: 27



Что-то вы не с той стороны зашли по-моему...
Сейчас вы уже зачем-то про логику и представление начали, хотя эти два понятия никак не влияют на сторону выполнения JS.

Цитата(Bulat @  30.4.2008,  09:48 Найти цитируемый пост)
данные по этим чекбоксам у меня уже присутствует в разметке

Вот вам пример, когда данных в разметке нет:
my.js:
Код

var from = {много данных};
var to = {много данных};
function LoadLanguages(id, direction) {
    $('#' + id).append(new Option('--Выберите язык--', 0, 1));
    var languages = direction == 'from' ? from : to;
    for(var elem in languages) {
        $('#' + id).append(new Option(languages[elem], elem))
    }
}

my.html:
Код

<select name="TO_LANG" id="TO_LANG" class="select_box input">
</select>
<script>LoadLanguages('TO_LANG', 'to')</script>


PS: и все-таки попробуйте ответить на мой вопрос: с помощью чего может выполняться JS на стороне сервера?

Это сообщение отредактировал(а) KSURi - 30.4.2008, 11:59


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
Bulat
Дата 30.4.2008, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(KSURi @  30.4.2008,  11:57 Найти цитируемый пост)
Что-то вы не с той стороны зашли по-моему...
Сейчас вы уже зачем-то про логику и представление начали, хотя эти два понятия никак не влияют на сторону выполнения JS.


Вообще-то сама тема и название не подразумевает обсуждение исключительно JS и способов его выполнения. smile Более того, из контекста первых постов видно, что речь идет о написании ботов. 

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


Цитата(KSURi @  30.4.2008,  11:57 Найти цитируемый пост)
Вот вам пример, когда данных в разметке нет:


Код

var from = {много данных};
var to = {много данных};
function LoadLanguages(id, direction) {
    $('#' + id).append(new Option('--Выберите язык--', 0, 1));
    var languages = direction == 'from' ? from : to;
    for(var elem in languages) {
        $('#' + id).append(new Option(languages[elem], elem))
    }
}



var from = {много данных};
var to = {много данных};


данные откуда будут браться?? Из воздуха или мы их статически забьем, да так, что при любом изменении лез ищи тот файлик, ту функцию которую нужно подправить?? А если тот же набор данных нужно представить в ином виде и в иной форме, а главное совсем в другом месте, повторно описывать весь набор данных и снова их представлять?? Вот причем здесь логика и представление. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
gcc
Дата 1.5.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Спаисбо всем!
сори, мне надо было чтобы он их выполнял!!!

я передумал делать, так как я не сильно разбираюсь.

и вижу что нельзя сделать так как я хотел  smile  smile 

можите здесь помочь http://forum.vingrad.ru/forum/topic-209139...y1498021/0.html

Это сообщение отредактировал(а) gcc - 3.5.2008, 01:42
PM WWW ICQ Skype GTalk Jabber   Вверх
sir_nuf_nuf
Дата 2.5.2008, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



KSURi, вопрос не в том, как серевер выполнит js (что ему в принципе мешает то ?)

Вопрос в том: зачем выполнять серверу JS ?


Вообще сервер не отличает браузер от LWP и от другой программы , которая работает по HTTP (в первом приближении). 
Однако иногда авторы сервера пишут эвристику.. что то типа  " а если нас спрашивает поисковый бот, который не понимает наш JS, а мы хотим показать ему информацию, то выполним этот js за него... "

Это единственное применение которое я вижу..


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
tolkien
Дата 6.5.2008, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 277
Регистрация: 5.4.2008

Репутация: 4
Всего: 4



Сегодня наткнулся на страничку перегруженную js кодом функции, массивы. И нужные данные находятся в js массиве. От туда извлекаются после хитрых вычислений ID элемента массива и выводятся в поля ввода формы. Проблема в том что пришлось  js код смотреть под отладчиком чтобы определить места откуда дергать нужные данные. 
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1118 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.