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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> грабер аякс сайтов, не perl? 
:(
    Опции темы
burakov
Дата 20.4.2011, 16:41 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день, подскажите пожалуйста
технологию грабинга сайтов на аякс (ну или ему подобных), 

если использую LWP::Simple метод get ($url),
получаю в результате не содержимое, а сплошные java коды.

Вопрос: при помощи perl такие сайты нельзя сграбить? (как пример 999.md)

и Вопрос2 - чем все таки можно сграбить такие сайты. (Поведение броузера файрфокс (при просмотров фрагмента кода) навело на мысль что это как то можно сделать при помощи java (jscript)?) То есть нужно как то разобрать уже отработанное на клиента содержимое... Или же я чего принципиально НЕДОПОНИМАЮ?

в какую сторону смотреть?
Спасибо



--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Pfailed
Дата 20.4.2011, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



WWW::Mechanize::Firefox уже смотрели?



--------------------
PM MAIL   Вверх
burakov
Дата 21.4.2011, 23:38 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Поставил модуль
Смысл понятен.
Все работает, но

то ли они там на сайте чего дополнительно назащищали, то ли так и должно быть, короче
$mech->save_content ($file);
или 
$mech->content

отрабатывают также как если бы я просмотрел исходный код страницы -итог js функции вместо текста, который на экране.
а опытным путем я делал так выделял всю страницу и делал 
"Исходный код выделенного фрагмента"
и тогда было все "ОК" - никаких функций - нормальная html страничка
на окошке еще интересно так пишется: "исходный код DOM выделенного фрагмента" - что наводит на мысль, что это совсем не то, что получить исходный код страницы (который похоже просто с сервера тянется)!

А как получить вот этот вот код DOM??

страничка для экспериментов кому интересно http://999.md/Board/All.aspx?catId=659



--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Pfailed
Дата 22.4.2011, 08:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(burakov @  21.4.2011,  23:38 Найти цитируемый пост)
А как получить вот этот вот код DOM??

Возможно так
$mech->document->{body}->{innerHTML}


--------------------
PM MAIL   Вверх
burakov
Дата 22.4.2011, 10:35 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да, работает...
Спасибо, очень помогло.

а если все таки грабер должен крутится на хостинге. Там ведь файрфокс не запустишь.
Тогда на java Нужно писать? Просто интересно, апи файрфокс - это ж своего рода обманка, приспособа.
Может есть модуль какой на перл, который сэмулирует работу броузера и позволит выполниться java скриптам?

посмотрел "java" на Cpan - есть модули, которые позволяет использовать java классы В перловой программе...

Может я вообще чего не так спрашиваю...?? путаюсь в технологии...
не могу отследить цепочку. Раньше было понятно - послал на сервер запрос - он тебе ответ.
ответ разобрал и все.

А сейчас он тебе ответ , а там jscript овый текст. Чем еще (кроме  настоящего броузера) можно заставить его выполниться и дать нормальную страничку? Должны же уже придумать какой то объект для выполнения в нем java Скриптов?



--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
Pfailed
Дата 22.4.2011, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



На обычном shared хостинге нет. А на dedicated/vps сервере пожалуйста, ставьте Xvfb вместо полноценного X сервера и запускайте firefox.
Есть еще WWW::Scripter с JavaScript плагином, там насколько знаю браузер не нужен.



--------------------
PM MAIL   Вверх
burakov
Дата 22.4.2011, 15:05 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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)); 
тоже не прокатывает.


--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
alezzz
Дата 22.4.2011, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


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

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



Сталкивался с проблемой "wide character ..........", посмотрите http://forum.vingrad.ru/forum/topic-327136...encode-utf.html , может что-то поможет.
PM MAIL   Вверх
burakov
Дата 22.4.2011, 21:03 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Друзья, спасибо всем
мне в данном случае помогло вот что
привожу ссылку
http://habrahabr.ru/blogs/perl/53578/

и мое решение - может кому поможет

Код

sub utf8_to_win1251 {
    use Encode qw (encode decode); 
    my $str = shift;
    $str = encode ('utf8', $str); 
    $str = encode ('cp1251', decode ('utf8', $str)); 
    return $str;
}




--------------------
Нотный архив http://libnote.ru скачать ноты бесплатно
PM MAIL   Вверх
EcSYZ
Дата 24.4.2011, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Тоже столкнулся с подобной проблемой недавно.
Есть такая зверюшка, зовётся "phantomJS" - minimalistic headless WebKit-based with JavaScript API, или же просто webkit из консоли.
Лично пока только в этом варианте вижу хоть какуюто возможность работы с сайтами, где всё на JS, хотя даже этот способ весьма медленный, накладный и геморойный, но по крайней мерее рабочий.
PM MAIL WWW   Вверх
ming
Дата 28.4.2011, 05:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

и мое решение - может кому поможет

ваше решение уже вшито в модуль Encode
Код

use Encode qw/from_to/;
my $str = ..... ;
Encode::from_to($str, 'utf8', 'cp1251');
print $str;

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


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

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


 




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


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

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