Парсер-граббер nakolesah.ru

Був зайнятий у вільне (від основної роботи) час - робив халтуру, яка полягала в проханні написати парсер, щоб сграбіть структуру підбору коліс по автомобілю з сайту 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 !

Ще на схожі теми:

Comments

2 коментарі to "Парсер-граббер nakolesah.ru"

  1. xxx пише:

    хотіли б придбати парсер пишіть на пошту

Leave a Reply