Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | |
можете попробовать статистикой определить его. 29.06.06 23:34 Число просмотров: 2279
Автор: arto Статус: Незарегистрированный пользователь
|
> > > Как корректно разрулить вопрос с кодировками? То > есть > > будет > > > ли HTML::Parser корректно разбирать файлы, не > зная что > > там > > > внутрях? В основном, конечно вопрос касаемо > юникода. > > > Если пытаться энкодить все получаемое в UTF8, то > > насколько > > > я понимаю, может получиться, что отправляя > последующие > > > запросы я буду давать параметры запроса в > неверной > > > кодировке и ничего не получать обратно.. То есть > > > неюникодные ресурсы могут на меня за такое > обидеться. > > > Как сделать универсально? > > > > все хранить в уникоде, запросы делать в той > кодировке, > > какую просят. > > Тогда соответственно два вопроса, как и чем переводить то, > что получено в юникод (UTF8?)? Надеяться, что чарсет будет > в хедерах?
можете попробовать статистикой определить его.
переводить -- perldoc Encode.
> И, соответственно, как потом переводить юникод обратно?
perldoc Encode
> Это > получается надо где-то хранить метку в каком чарсете делать > последующие запросы с этой страницы?
да. метаинформация должна быть, как и url.
> > Опять же, получается, надо будет отдавать HTML::Parser-у > юникодный файл. Если он хавает юникодный фал нормально, то > получается он настолько же нормально отдаст мне все данные, > которые будут тоже в юникоде и я их совершенно прозрачно > запихиваю их в параметры запроса в LWP.
да.
> Схема работы должна быть примерно такова: > LWP -> File -> HTTP::Parser -> (Storable) -> > LWP
вам ведь все равно надо информацию приводить к какому либо одному виду.
можете использовать cp1251.
|
<programming>
|
[Perl] Парсинг WEB страниц и кодировки 29.06.06 17:33
Автор: TLoD,Snake Статус: Незарегистрированный пользователь
|
Есть задача написания умного вэб спайдера/харвестера. Для этого использую сначала LWP, котрым сохраняю страницу в кэш на диске примерно так:
':content_cb' => sub{
my ($chunk, $res, $proto) = @_;
{
use bytes;
$total_received += length($chunk);
}
die() if $total_received/1024/1024 > $param{parse_file_max_size};
print W $chunk;
},
После чего натравливаю на него HTML::Parser. $p->parse_file()
Как корректно разрулить вопрос с кодировками? То есть будет ли HTML::Parser корректно разбирать файлы, не зная что там внутрях? В основном, конечно вопрос касаемо юникода.
Если пытаться энкодить все получаемое в UTF8, то насколько я понимаю, может получиться, что отправляя последующие запросы я буду давать параметры запроса в неверной кодировке и ничего не получать обратно.. То есть неюникодные ресурсы могут на меня за такое обидеться.
Как сделать универсально?
|
|
все хранить в уникоде, запросы делать в той кодировке,... 29.06.06 18:49
Автор: arto Статус: Незарегистрированный пользователь
|
> Есть задача написания умного вэб спайдера/харвестера. Для > этого использую сначала LWP, котрым сохраняю страницу в кэш > на диске примерно так: > > ':content_cb' => sub{ > my ($chunk, $res, $proto) = @_; > { > use bytes; > $total_received += length($chunk); > } > die() if $total_received/1024/1024 > > $param{parse_file_max_size}; > print W $chunk; > }, > После чего натравливаю на него HTML::Parser. > $p->parse_file() > > Как корректно разрулить вопрос с кодировками? То есть будет > ли HTML::Parser корректно разбирать файлы, не зная что там > внутрях? В основном, конечно вопрос касаемо юникода. > Если пытаться энкодить все получаемое в UTF8, то насколько > я понимаю, может получиться, что отправляя последующие > запросы я буду давать параметры запроса в неверной > кодировке и ничего не получать обратно.. То есть > неюникодные ресурсы могут на меня за такое обидеться. > Как сделать универсально?
все хранить в уникоде, запросы делать в той кодировке, какую просят.
|
| |
[Perl] все хранить в уникоде, запросы делать в той кодировке,... 29.06.06 20:51
Автор: TLoD,Snake Статус: Незарегистрированный пользователь
|
> > Как корректно разрулить вопрос с кодировками? То есть > будет > > ли HTML::Parser корректно разбирать файлы, не зная что > там > > внутрях? В основном, конечно вопрос касаемо юникода. > > Если пытаться энкодить все получаемое в UTF8, то > насколько > > я понимаю, может получиться, что отправляя последующие > > запросы я буду давать параметры запроса в неверной > > кодировке и ничего не получать обратно.. То есть > > неюникодные ресурсы могут на меня за такое обидеться. > > Как сделать универсально? > > все хранить в уникоде, запросы делать в той кодировке, > какую просят.
Тогда соответственно два вопроса, как и чем переводить то, что получено в юникод (UTF8?)? Надеяться, что чарсет будет в хедерах?
И, соответственно, как потом переводить юникод обратно? Это получается надо где-то хранить метку в каком чарсете делать последующие запросы с этой страницы?
Опять же, получается, надо будет отдавать HTML::Parser-у юникодный файл. Если он хавает юникодный фал нормально, то получается он настолько же нормально отдаст мне все данные, которые будут тоже в юникоде и я их совершенно прозрачно запихиваю их в параметры запроса в LWP.
Схема работы должна быть примерно такова:
LWP -> File -> HTTP::Parser -> (Storable) -> LWP
|
| | |
можете попробовать статистикой определить его. 29.06.06 23:34
Автор: arto Статус: Незарегистрированный пользователь
|
> > > Как корректно разрулить вопрос с кодировками? То > есть > > будет > > > ли HTML::Parser корректно разбирать файлы, не > зная что > > там > > > внутрях? В основном, конечно вопрос касаемо > юникода. > > > Если пытаться энкодить все получаемое в UTF8, то > > насколько > > > я понимаю, может получиться, что отправляя > последующие > > > запросы я буду давать параметры запроса в > неверной > > > кодировке и ничего не получать обратно.. То есть > > > неюникодные ресурсы могут на меня за такое > обидеться. > > > Как сделать универсально? > > > > все хранить в уникоде, запросы делать в той > кодировке, > > какую просят. > > Тогда соответственно два вопроса, как и чем переводить то, > что получено в юникод (UTF8?)? Надеяться, что чарсет будет > в хедерах?
можете попробовать статистикой определить его.
переводить -- perldoc Encode.
> И, соответственно, как потом переводить юникод обратно?
perldoc Encode
> Это > получается надо где-то хранить метку в каком чарсете делать > последующие запросы с этой страницы?
да. метаинформация должна быть, как и url.
> > Опять же, получается, надо будет отдавать HTML::Parser-у > юникодный файл. Если он хавает юникодный фал нормально, то > получается он настолько же нормально отдаст мне все данные, > которые будут тоже в юникоде и я их совершенно прозрачно > запихиваю их в параметры запроса в LWP.
да.
> Схема работы должна быть примерно такова: > LWP -> File -> HTTP::Parser -> (Storable) -> > LWP
вам ведь все равно надо информацию приводить к какому либо одному виду.
можете использовать cp1251.
|
|
|