![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Добрый день, подскажите пожалуйста
технологию грабинга сайтов на аякс (ну или ему подобных), если использую LWP::Simple метод get ($url), получаю в результате не содержимое, а сплошные java коды. Вопрос: при помощи perl такие сайты нельзя сграбить? (как пример 999.md) и Вопрос2 - чем все таки можно сграбить такие сайты. (Поведение броузера файрфокс (при просмотров фрагмента кода) навело на мысль что это как то можно сделать при помощи java (jscript)?) То есть нужно как то разобрать уже отработанное на клиента содержимое... Или же я чего принципиально НЕДОПОНИМАЮ? в какую сторону смотреть? Спасибо |
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
WWW::Mechanize::Firefox уже смотрели?
|
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Поставил модуль
Смысл понятен. Все работает, но то ли они там на сайте чего дополнительно назащищали, то ли так и должно быть, короче $mech->save_content ($file); или $mech->content отрабатывают также как если бы я просмотрел исходный код страницы -итог js функции вместо текста, который на экране. а опытным путем я делал так выделял всю страницу и делал "Исходный код выделенного фрагмента" и тогда было все "ОК" - никаких функций - нормальная html страничка на окошке еще интересно так пишется: "исходный код DOM выделенного фрагмента" - что наводит на мысль, что это совсем не то, что получить исходный код страницы (который похоже просто с сервера тянется)! А как получить вот этот вот код DOM?? страничка для экспериментов кому интересно http://999.md/Board/All.aspx?catId=659 |
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
Возможно так $mech->document->{body}->{innerHTML} |
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Да, работает...
Спасибо, очень помогло. а если все таки грабер должен крутится на хостинге. Там ведь файрфокс не запустишь. Тогда на java Нужно писать? Просто интересно, апи файрфокс - это ж своего рода обманка, приспособа. Может есть модуль какой на перл, который сэмулирует работу броузера и позволит выполниться java скриптам? посмотрел "java" на Cpan - есть модули, которые позволяет использовать java классы В перловой программе... Может я вообще чего не так спрашиваю...?? путаюсь в технологии... не могу отследить цепочку. Раньше было понятно - послал на сервер запрос - он тебе ответ. ответ разобрал и все. А сейчас он тебе ответ , а там jscript овый текст. Чем еще (кроме настоящего броузера) можно заставить его выполниться и дать нормальную страничку? Должны же уже придумать какой то объект для выполнения в нем java Скриптов? |
|||
|
||||
Pfailed |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
На обычном shared хостинге нет. А на dedicated/vps сервере пожалуйста, ставьте Xvfb вместо полноценного X сервера и запускайте firefox.
Есть еще WWW::Scripter с JavaScript плагином, там насколько знаю браузер не нужен. |
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
$content = $mech->document->{body}->{innerHTML} отдает контент в кодировке utf8 и потом print на это контенте ругается "wide character .........." Хотя и принтует (и в файл пишет если надо) . После записи и извлечения из файла - на нем уже нормально работает encode, а до перезаписи переменной в файл - ругается "wide character...' приходится лишний раз перезаписывать в файл (он при этом тоже ругается , но пишет), а потом читать из файла и делать encode. Как убрать эту ошибку в Tk я делал так $str = decode ('cp1251', $str); - помогало а здесь не прокатывает пробовал как положено $str = encode ('cp1251', decode ('utf8', $str)); тоже не прокатывает. |
|||
|
||||
alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 2 Всего: 14 |
Сталкивался с проблемой "wide character ..........", посмотрите http://forum.vingrad.ru/forum/topic-327136...encode-utf.html , может что-то поможет.
|
|||
|
||||
burakov |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 554 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Друзья, спасибо всем
мне в данном случае помогло вот что привожу ссылку http://habrahabr.ru/blogs/perl/53578/ и мое решение - может кому поможет
|
|||
|
||||
EcSYZ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 79 Регистрация: 21.6.2007 Репутация: нет Всего: 1 |
Тоже столкнулся с подобной проблемой недавно.
Есть такая зверюшка, зовётся "phantomJS" - minimalistic headless WebKit-based with JavaScript API, или же просто webkit из консоли. Лично пока только в этом варианте вижу хоть какуюто возможность работы с сайтами, где всё на JS, хотя даже этот способ весьма медленный, накладный и геморойный, но по крайней мерее рабочий. |
|||
|
||||
ming |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 30.1.2009 Где: Новосибирск Репутация: нет Всего: 3 |
ваше решение уже вшито в модуль Encode
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |