![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
чем такое реализовать? может есть модуль
нужно просто как бы зайти на страницу ботом, и чтобы бот "прочитал" (или "просто увидел") Javascript не нашел, где-то видел что google смотрит JS... Это сообщение отредактировал(а) gcc - 26.4.2008, 23:21 |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Эм.. а в чем проблема? Получаете страницу, парсите как вам удобно, выуживаете JS из него.
-------------------- Died at Life.pl line 21 |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
ну я написал: что нужно зайти на страницу и чтобы бод увидел JS и нажимать никуда не надо!!! тем самым когда бот зайдет, JS скрипт должен выполнить кое-что...
когда вы заходиьте на страницу со своего браузера и когда там выполняеться JS код автоматически вы же ничего не клацаете и не парсите!!?? или как сделать? например wget не видет JS, ну так как на perl? Я понятно выражаюсь, или что не понятно? захожу с браузера: я захожу на тсраницу и там віполняеться JS захожу с wget или с LWP::UserAgent : JS не выполняеться как сделать чтобы выполнялся? или всетаки нужно пасить? |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Нет, вы выражаетесь не понятно, но я кажется все равно догадался. Надо было сразу написать, что что вы хотите выполнить JS средствами Perl, а не то, что "скрипт должен увидеть JS". Посмотрите, думаю поможет. Это сообщение отредактировал(а) KSURi - 27.4.2008, 12:42 -------------------- Died at Life.pl line 21 |
|||
|
||||
nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 37 Всего: 84 |
gcc, или изучите данный скрипт, если сможете, думаю получится и разобраться что он делает, переделать это в perl.
|
|||
|
||||
tolkien |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: 4 Всего: 4 |
а что там должно было выполнится? редирект?
|
|||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
не совсем понял
![]() Как правило после запроса бота, идет ответ - разметка страницы вместе с выполненными js-скриптами. Можно ли выполнять их еще раз, да из зачем это нужно?? -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
tolkien |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: 4 Всего: 4 |
Уже выполнение js скриптов идет на серваке? |
|||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Насколько я помню из своего опыта написания ботов, бывали случаи когда приходилось что-то выполнять(генерить) средствами перла, то что делалось на странице через js и отправлять это. Как правило при пост-запросе. В случае с гет же, при запросе страницы разметка содержащая некоторые функции js, приходит с уже выполненными js-функциями и сценариями. Т.е. при работе с ботом, пришедшую разметку можно открыть в браузере, серьезных различий не будет. ![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Эээ... смысл фразы в том, что при GET запросе JS выполняется на сервере? Надеюсь я не понял смысл) JavaScript - это client-side технология и соответственно выполняется только на стороне клиента. При запросе и сохранении страницы в файл, если JS был внедрен непосредственно в разметку, вы не заметите разницы. Если же JS был вынесен в отдельный файл, то разницу вы заметите (за исключением случая, когда в ссылке на скрипт прописан абсолютный URL, тогда браузер подгрузит файл перед рендерингом и выполнит его). Даже модули вроде JavaScript.pm скорее всего не позволят выполнять полноценный JS на стороне сервера, т.к. не реализуют (сам не проверял, но скорее всего так и есть) DOM. -------------------- Died at Life.pl line 21 |
|||
|
||||
PanamOS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Я не спорю. Но после того, как вы отправите http-запрос, а главное получив ответ, вы автоматически становитесь клиентом. ![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Это да, просто мне показалось, что вы имели ввиду что, что в контенте, который вы получите от сервера _уже_ будет результат выполнения JS, хотя выполнится он во время рендеринга страницы.
-------------------- Died at Life.pl line 21 |
|||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Давно не занимался написанием ботов, но может содержать, а может и нет. Тут ведь все зависит не только от наличия самой js, но и от того, что она выполняет. ![]() Добавлено через 49 секунд Если быть совсем точным, бывает что данные и так на виду, в контенте, без выполнения самой js-функции ![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Нет, не может. Интерпретатор JS - это браузер. Сервер высылает только исходный код, а браузер его выполняет. -------------------- Died at Life.pl line 21 |
|||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Может. ![]() Сам по себе js-не создает и не получает исходные данные. Он лишь может полученные данные изменить, что-то отобразить, что-то скрыть и т.п. ![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
tolkien |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: 4 Всего: 4 |
Не может. Почему? Потому что если он выполняется на стороне сервера. Клиент не получает в ответе никакого javascript. Только результат. Сами подумайте что за абсурд. Выполнить код js на стороне сервера и потом его же с результатом вернуть клиенту. БРЕД.
|
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Bulat, ну я даже не знаю как еще объяснить...
Попробуйте ответить на вопрос: с помощью чего выполняется JS на стороне сервера? -------------------- Died at Life.pl line 21 |
|||
|
||||
shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
||||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
tolkien, KSURi,
Зайдем с другой стороны. JS - используют для представления, а не для логики. Вы используете js для того чтобы приконнектится к БД и получать данные, или может быть для того, чтобы считывать их из xml-конфигов?? Речь не о том, где выполняется js, а о том насколько это необходимо в случае с ботом. Вчера только расписал js-ку, которая скрывала и отображала группу чекбоксов. Но в независимости от того, выполняется у меня js в браузере или нет, данные по этим чекбоксам у меня уже присутствует в разметке. Конечно можно использовать js по всякому, но не стоит забывать о разделении логики и представления. ![]()
Немного погярячился. ![]() ![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
KSURi |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Что-то вы не с той стороны зашли по-моему...
Сейчас вы уже зачем-то про логику и представление начали, хотя эти два понятия никак не влияют на сторону выполнения JS. Вот вам пример, когда данных в разметке нет: my.js:
my.html:
PS: и все-таки попробуйте ответить на мой вопрос: с помощью чего может выполняться JS на стороне сервера? Это сообщение отредактировал(а) KSURi - 30.4.2008, 11:59 -------------------- Died at Life.pl line 21 |
||||
|
|||||
Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
Вообще-то сама тема и название не подразумевает обсуждение исключительно JS и способов его выполнения. ![]() Еще раз повторяю, речь не о выполнении функции js как таковой, а о необходимости выполнять эту функцию вообще. ![]()
var from = {много данных}; var to = {много данных}; данные откуда будут браться?? Из воздуха или мы их статически забьем, да так, что при любом изменении лез ищи тот файлик, ту функцию которую нужно подправить?? А если тот же набор данных нужно представить в ином виде и в иной форме, а главное совсем в другом месте, повторно описывать весь набор данных и снова их представлять?? Вот причем здесь логика и представление. ![]() -------------------- менеджер по кодеврайтингу ![]() |
||||
|
|||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
Спаисбо всем!
сори, мне надо было чтобы он их выполнял!!! я передумал делать, так как я не сильно разбираюсь. и вижу что нельзя сделать так как я хотел ![]() ![]() можите здесь помочь http://forum.vingrad.ru/forum/topic-209139...y1498021/0.html Это сообщение отредактировал(а) gcc - 3.5.2008, 01:42 |
|||
|
||||
sir_nuf_nuf |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 920 Регистрация: 6.1.2008 Репутация: 14 Всего: 31 |
KSURi, вопрос не в том, как серевер выполнит js (что ему в принципе мешает то ?)
Вопрос в том: зачем выполнять серверу JS ? Вообще сервер не отличает браузер от LWP и от другой программы , которая работает по HTTP (в первом приближении). Однако иногда авторы сервера пишут эвристику.. что то типа " а если нас спрашивает поисковый бот, который не понимает наш JS, а мы хотим показать ему информацию, то выполним этот js за него... " Это единственное применение которое я вижу.. |
|||
|
||||
tolkien |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: 4 Всего: 4 |
Сегодня наткнулся на страничку перегруженную js кодом функции, массивы. И нужные данные находятся в js массиве. От туда извлекаются после хитрых вычислений ID элемента массива и выводятся в поля ввода формы. Проблема в том что пришлось js код смотреть под отладчиком чтобы определить места откуда дергать нужные данные.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |