[Erlang] Как работать с web кодировками
От: cadet354 Россия
Дата: 28.02.08 08:48
Оценка:
Доброго времени,
как работать с различными кодировками, например win-1251.

Для примера код который ищет "главные" ссылки на mail.ru:

-module(parse_mail).
%% API
-export([start/0]).

%% поиск "главных ссылок"
start()->
    grab_inet:start(),
    Body=grab_inet:get_content("http://www.mail.ru"),
    parse_div(list_to_binary(Body)).



%% Функция для определения начала нужного куска 
parse_div(<<"<div id=\"rbLoadedId_4473\">",Rest/binary>>)->
    collect_url(Rest);
parse_div(<<_Char,Rest/binary>>) ->
    parse_div(Rest);
parse_div(<<>>)->
    erlang:error("Start div  не найден!").

%% поиск  ссылок внутри div
collect_url(Rest)->
    collect_url(Rest,[]).


% начало ссылки
collect_url(<<"<a",Rest/binary>>,Acc)->
   {Url,T}= collect_url_body(Rest,lists:reverse("<a")),
    collect_url(T,[Url|Acc]);
% закончить поиск
collect_url(<<"<div id=\"rbLoadedId",_Rest/binary>>,Acc)->
   lists:reverse(Acc);
collect_url(<<_Char,Rest/binary>>,Acc) ->
    collect_url(Rest,Acc);
collect_url(<<>>,Acc) ->
    Acc.

%% код внутри ссылки
collect_url_body(<<"<\/a>",Rest/binary>>,L)->
    {lists:reverse(L,"</a>"),Rest};
collect_url_body(<<Char,Rest/binary>>,L) ->
    collect_url_body(Rest,[Char|L]);
collect_url_body(<<>>,_) ->
    erlang:error("Ссылка оформлена не верно, нет закрывающего тега").

ссылки он находит, но как привести в "читабельный вид"?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.