logo
logo
Примерно как-то так [Дим(м) 08/05/2008 13:03]
[nba.az]
Name=Национальный банк Азербайджана
Server=nba.az
PageURL=/default.aspx?go=cfl&lng=en
EstimatedPageSize=52000
HomeCurrencyCode=AZN
HomeCurrencyName=Manat
Prologue=id="ctl19_lblCurDate" class="header">(?<date>.*?)<
Record=<td>(?<value2>\d+)? (?<code>.*?)<\/td><td>.*?<\/td><td>(?<value1>.*?)<\/td>
Epilogue=<\/table>
DecimalSeparator=,
 
Но сразу хочу предупредить, что сайт совсем не приспособлен для автоматического получения курсов валют
Так, например
- нет возможности указать интересующую дату (что бы вы ни выбирали в интерфейсе AblityCash, курсы всегда будут извлекаться "за сегодня")
- нет названий валют (возможно, это и не проблема, если AbilityCash сохраняет введенные вручную названия и ориентируется исключительно по кодам)
 
Что касается "как", то алгоритм примерно следующий:
- разобраться, как в адресе страницы задается дата и сформировать соответствующим образом PageURL с помощью макросов %xx%
- открыть исходный код страницы (View page source)
- сохранить его в файл, чтобы оценить примерный размер для EstimatedPageSize
- найти в этом html интересующие данные и определить маркеры их начала и конца для Prologue и Epilogue (очевидно, что маркеры должны "охватывать" именно блок данных и, по возможности, поменьше всего лишнего)
- если дата курсов указывается на странице один раз, то ее надо извлекать в Prologue
- для каждой записи с курсом сформировать регулярное выражение (Record) для извлечения максимального кол-ва информации с использованием имеющихся маркеров (?<...>...)
- указать, если необходимо, отличный от точки разделитель для дробной части и кодовую страницу