همه ما برای هر تصمیمی داخل محصول نیاز به دیتا داریم تا بدونیم کجا باید بریم و یا جایی که داریم میریم درسته یا نه. اگه دیتا از محصول خودمون داشته باشیم که مشکلی وجود نداره، از همون می فهمیم که به سمت درست بریم. اما وقتی دیتا نداریم چیکار باید بکنیم؟ باید با یک سری دیتای ضمنی و غیر مستند جلو بریم؟ قطعا نه. اینجاست که کراول(crawl) به کمک شما میاد.
برای هر موضوع دقت و اعتبار این کار متفاوته. مثلا اگر میخواید یه محصول برای معاملات خونه (اجاره، خرید و ...) توسعه بدید و نیاز به دیتایی دارید که ندارید. وجود محصولات مشابه (مثل دیوار) در این حوزه، هم دقت کار شمارو بالا میبره هم اعتباری میبخشه به دیتایی که میخواید بدست بیارید.
این کار سه مرحله داره، گرفتن اطلاعات، دستهبندی اونها و در آخر استفاده ازشون.
پیشنیازهای این کار البته داشتن دانش کاربردی از یک زبان برنامهنویسی(مثلا python)،کمی دیتابیس(مثلا postgres) و مقداری هم از یک ابزار مصورسازی(مثلا metabase).
شما میدونی اطلاعات کجا نشسته، میتونی اونارو بخونی. پس میتونی همه اطلاعاتی که نیاز داری رو بسپاری به یه ماشین تا استخراج کنه برات. تقریبا با هر زبون برنامهنویسیای میشه ولی خب پر استفادهترین زبونی که من دیدم برای اینکار پایتونه. سریع نوشته میشه و با یه سری کانفیگ به اندازه کافی سریع هم اجرا میشه.
چون قصد ندارم آموزش پایتون و کراول کردن بدم میتونم مقاله مرتبط که توی ویرگول دیدم رو براتون بزارم اینجا تا خواستید برید بیآموزید.
این مرحله صرفا گرفتن اطلاعاته، توی این مرحله هنوز هیچ استفادهای نمیتونید بکنید از دیتاهایی که جمع کردید.
نکته: حواستون باشه که دیتا رو به شکل درستی بگیرید که وقتی میخواید دستهبندیش بکنید به مشکل نخورید.
فوت کوزهگری: یادتون بمونه کمالگرا نباشید :)
حالا وقتشه اطلاعاتتون رو بریزید توی دیتابیستون به همون قالب و چارچوبی که میخواید ازش استفاده کنید. حواستون باشه اینجا که اگه دیتارو به شکل اشتباهی وارد کنید، موقع پردازش کردنش یکم اذیت میشید. مثلا اگر داخل دیتاهاتون قیمت وجود داره و برای شما هم این قیمت اهمیت زیادی داره، حتما اون رو به صورت عدد بریزید داخل دیتابیس. شاید بگید این که بدیهیه، بله این بدیهی بود ولی بقیه اطلاعات اینقدر بدیهی نیست و اگر مقدار اطلاعاتتون که گرفتید زیاد باشه، هزینه زمانی زیادی ازتون میگیره.
من به شخصه معمولا از دیتابیس postgres خودم استفاده میکنم، اطلاعات رو توش میریزم و شروع میکنم به کوئری زدن. اما روش روتینام برای شرکتها اینجوریه که یدونه ابرک از ابراروان میگیرم و یه دیتابیس سرپایی توش بالا میارم( این یکم ازتون زمان میگیره اگه بار اولتون باشه و از داکر هم استفاده نکنید) اما اگر اصلا علاقهای به سروکله زدن با سرور ندارید، میتونید از سرویسهای ابری مثل لیارا استفاده بکنید. اما در کل حواستون باشه که دارید از هر سرویسی استفاده میکنید pay as you go باشه سرویس که خرج الکی براتون در نیاد(معمولا با بالاترین منابع با حداکثر 10 هزارتومن کار جمع شده اما اگه یه سرور کامل بخواید سفارش بدید با حداقل منابع اختصاصی ممکنه 160هزارتومن دربیاد)
اصرار من برای استفاده از سرور بخاطر این هستش که به اشتراکگذاری اطلاعات با ادما توی سرور خیلی راحتتره. مخصوصا اگر اونا باهاتون میجنگند و مجبورید اثبات کنید هر کلمهتون رو :)
وقتی اطلاعات رو توی دیتابیس ریختید حالا موقع اینه که با دیتاها بازی کنید. من شخصا از متابیس(metabase) برای اینکار استفاده میکنم. با کوئری اطلاعاتی که میخام رو بدست میارم و با مصور کردنشون و ساختن داشبردهای مختلف، با بقیه این اطلاعات رو به اشتراک میزارم.
چندتا از سوالاتی که به صورت کلی توی این کار پیش میاد براتون رو مینویسم
اینکه شما چه اطلاعاتی نیاز دارید کاملا به موضوعتون مرتبطه. شما یه موقع میخواید با این اطلاعات به حجم بازارتون برسید، یه موقع فقط دارید ابتدای مسیر خودتون رو پیدا میکنید. دیتا که باشه خودتون متوجه میشید که چه استفادهای ازش بکنید.
هر کاری برای بار اول زمانبره. شاید بار اول یک هفته زمان ببره اما بار پنجم شیشم کمتر از یک نصف روز زمان خواهد برد. چون شما دیگه فقط دغدغهات این هستش که چه اطلاعاتی جمع کنم وگرنه کراول و ریختن توی دیتابیس که چارخط کده.
خیلی وقتها نیاز شما قانع کردن طرف مقابلتونه. شاید وظیفهتون نباشه ولی این نیاز رو میبینید که دست به کارهایی بزنید که به چیزی که میخواید برسید. پس بهتره با دیتا دهن بگید راه درست از کدوم سمت هستش.
خیلی جدی بگم، هیچ برنامهنویسی این کار رو وظیفهاش نمیدونه و انجام نمیده تا وقتی که مشکلش چیزی باشه جز برنامهنویسی. شما باید بدونید چه اطلاعاتی نیاز دارید و به چی میخواید برسید. تایپ کردن که هنر نیست :)
در آخر هم بگم، اینکار اصلا ثابت نیست و هربار که انجام میدید با بار قبلی فرق داره. اگر سوالی داشتید خوشحال میشم بتونم جواب بدم =)