Парсер-граббер nakolesah.ru
Був зайнятий у вільне (від основної роботи) час - робив халтуру, яка полягала в проханні написати парсер, щоб сграбіть структуру (Природно, на мові perl ).
І ось сьогодні він готовий (почав минулої неділі) і проходить тестування у замовника. Приємно те, що це перший випадок, коли моє хобі принесло невелику грошики (яку я витрачу на інше хобі - полювання
).
Не можу сказати, що парсер ідеальний. Мене наполегливо переслідує відчуття, що все можна було зробити простіше і краще ![]()
Але, крім того, що це перший мій написаний на замовлення скрипт, парсер nakolesah.ru для мене особисто примітний ще за декількома причинами:
- по-перше, я вперше застосував багаторівневу структуру даних (раніше глибше списку, вкладеного в хеш, не опускався) і розібрався з разименовиваніем посилань відповідно;
- по-друге - вперше зіткнувся з aspx-скриптами на сервері (відверто кажучи, залишилося не найприємніше відчуття, в порівнянні з perl і php. Втім, чого чекати від microsoft?).
Структура даних після парсинга nakolesah містить аж сім рівнів вкладеності, що спочатку трохи лякає і плутає. Втім, завдяки відмінній книзі « Perl - вивчаємо глибше », розібратися в цьому питанні не дуже складно.
Ось невеликий шматочок структури даних для наочності:
'Nissan' => ( 'Terrano' => ( '1994 '=> ( '30Di '=> ( 'Wheels' => ( '8 X 16 ET10 '=> ( 'Replacement' => 1 ), '7 X 15 ET12 '=> ( 'OEM' => 1 ), '8 X 18 ET '=> ( 'Replacement' => 1 ), '8 X 17 ET '=> ( 'Replacement' => 1 ) ),
При початку розробки я припускав, що вкладеність буде ще глибше - за рахунок додавання в кінець дерева масиву з характеристиками шин і дисків, але це виявилося не потрібно.
А ось так виглядає результат роботи парсера nakolesah.ru (висновок виробляється в XML-файл):
<brand name="Chrysler"> <model name="Pacifica"> <year value="2005"> <modifi name="35i"> <type name="wheels"> <label name="8 x 17 ET38"> <completion> Replacement </ completion> <axle> </ axle> </ Label> <label name="7,5 x 17 ET45"> <completion> OEM </ completion> <axle> </ axle> </ Label> <label name="8 x 19 ET35"> <completion> Replacement </ completion> <axle> </ axle> </ Label> <label name="8 x 18 ET35"> <completion> Replacement </ completion> <axle> </ axle> </ Label> </ Type> <type name="tires"> <label name="235/60 R18"> <completion> Replacement </ completion> <axle> </ axle> </ Label> <label name="235/65 R17"> <completion> OEM </ completion> <axle> </ axle> </ Label> <label name="235/55 R19"> <completion> Replacement </ completion> <axle> </ axle> </ Label> </ Type> </ Modifi>
А поки парсер для сайту nakolesah.ru тестується замовником, я думаю, що потихеньку приробив до нього можливість докачки даних і, можливо, багатопоточність (останній раз користувався бібліотекою threads майже рік тому, як раз подивлюся, що в ній новенького).
З найкращими побажаннями, dimio !

хотіли б придбати парсер пишіть на пошту
Тільки базу можу.