Click

Парсер-граббер 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 !

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

Category Рубрики: Інтернет , Кодинг | Tag Мітки: , , , | Comments 6 коментарів

Comments

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

  1. xxx пише:

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

  2. arhangel пише:

    По чому базу продаєте?

  3. pavel пише:

    Потрібна база, скільки коштує?

  4. женек пише:

    А чому "природно, мовою perl"? Чому не PHP?

    • dimio пише:

      Я знайомий з Perl і не знайомий з PHP - так що для мене було природно використовувати саме Perl.

Leave a Reply