Поиск по блогу

пятница, 19 февраля 2010 г.

Составление технического задания (ТЗ) на разработку парсера

Ко мне очень часто обращаются по поводу разработки парсеров. В принципе, я и стремилась именно к этому, когда заводила блог "Парсинг от А до Я". Проанализировав обращения потенциальных заказчиков, я поняла: чтобы облегчить себе жизнь - я должна написать о том, в каком виде хотелось бы получать заказы. Иначе - только четверть обращается с ТЗ, по которому нужны минимальные уточнения (либо даже не нужны совсем). Остальные - с общими фразами "нужно спарсить данные с такого-то сайта. оцените сроки и стоимость, во сколько мне обойдется это, если я закажу парсер вам?". Исходя из чего я должна оценивать сложность и объем работ при такой формулировке?

Итак, грамотное техническое задание - залог того, что не понадобится недельная переписка, чтобы клещами вытянуть из заказчика описание того, чего именно он хочет. Даже если вы заказываете парсер не у меня :) , ТЗ будет полезно. В первую очередь - вам самим, бо вы поймете и сформулируете в письменном виде свои пожелания.

Перечислю по пунктам, что должно быть в техническом задании.

1) Название ресурса, ссылка. Если необходим парсер только определенного раздела или разделов - указываете здесь же с перечислением всех ссылок (или с перечислением тех ссылок, которые надо исключить).

2) Данные или инструмент? Что вы хотите получить в итоге? Может, вам просто единоразово требуется получить данные? Или вам нужна программа/скрипт для того, чтобы самостоятельно получать требующиеся вам данные в любое время?

3) Если вам нужен "инструмент"
3.1. Это должен быть скрипт, парсер в виде десктопного приложения или все равно? У каждого вида есть определенные особенности. Скрипты обычно заказывают те, кто хочет запускать их по расписанию на хостинге, чтобы, например, регулярно обновлять данные на своем сайте. Вам подойдет десктопное приложение, если данные, полученные в результате парсинга, будут вами как-нибудь обрабатываться (возможно, автоматизированно) и анализироваться, прежде чем "пойдут" дальше. Причины выбора того или иного исполнения могут быть разными.

3.2. Входные данные и настройки. Надо ли предусматривать настройку парсера перед запуском и какую именно? Это касается не только регулярных выражений, обычно я их и так выношу в отдельный конфигурационный файл, чтобы при необходимости поменять без перекомпиляции приложения (если это десктопный парсер). Под настройками я в этом пункте имею в виду возможность задавать какие-либо входные параметры. Например, ключевое слово при парсинге выдачи (или список таких слов, который можно загружать из файла). Или выбор категорий, в которых парсить. Настройка задержки в секундах между запросами. И так далее.

3.3. Нужна ли поддержка работы через прокси-листы? Или какой-нибудь иной метод преодоления защиты от ботов, если таковая имеется на сайте?

4) Формат данных.
В каком виде вы хотите получить результирующие данные? Текстовый файл или база данных? У вас разработана структура базы (в этом случае следует ее приложить) или вы хотели бы, чтобы я сама ее разработала? Когда дело доходит до обсуждения этого пункта, я обычно прошу прислать скрины страниц ресурса-"донора" с выделенными (или каким-то другим образом помеченными) в графическом редакторе блоками. Это еще и играет роль гаранта, что клиент потом не скажет, что имел в виду другое и что мы друг друга не поняли. Если требуемая информация состоит из перечня "параметр - значение" (в большинстве интернет-магазинов), то следует оговорить, надо ли каким-то образом разбивать ее на поля или "выдирать" одним целым, прямо с версткой (например, в виде таблицы). Естественно, что от всего этого напрямую будет зависеть цена.

5) Оплата.
Для кого-то это очень щекотливая тема. Ничего щекотливого в ней не вижу. Свое рабочее время оцениваю 10$/час, прикидываю, сколько потрачу "чистого" времени, определяю сумму, потом по времени буру период с небольшим запасом, чтобы можно было потестировать. Если требуются только данные - пишу парсер и запускаю. Данные предоставляю после отработки программы (когда сайты большие - заранее время определить не могу, тут уж как все сложится - так сложится). Предоплата - 50%.

Если у вас ограниченный бюджет - так прямо и скажите. Лучше не юлить и не спрашивать после оглашения цены, нельзя ли сделать за вот столько-то. Иногда я соглашаюсь на заказы, когда клиент прямо оглашает цену, даже если цифра меньше той, за которую я обычно выполняю проекты аналогичной сложности. Для иллюстрации этого пункта как нельзя лучше подойдет вот этот ролик (я его просто обожаю - настолько там четко все подмечено):


И напоследок еще одна просьба :) Пожалуйста, не напускайте на ваши объяснения таинственности и загадочности. Не бойтесь подробно описывать ваши идеи и требования, уверяю вас, они мне не нужны, у меня самой столько идей, что на их реализацию потребовалось бы не одно десятилетие. Чем подробнее вы все опишете, тем больше шансов, что наше сотрудничество (если такому суждено состояться) будет плодотворным и обоюдоприятным. :) Со своей стороны даю гарантию, что ваши идеи за пределы работы над проектом по вашему заказу не выйдут.

Желаю удачи всем заказчикам! Ну и фрилансерам заодним :))
____

Чтобы быть в курсе обновлений блога, можно подписаться на RSS.

Статьи схожей тематики:



Комментариев нет:

Отправить комментарий

Комментарии модерируются, вопросы не по теме удаляются, троллинг тоже.

К сожалению, у меня нет столько свободного времени, чтобы отвечать на все частные вопросы, так что, может, свой вопрос лучше задать на каком-нибудь форуме?

Поделиться