🛑 گزارشی از یک پروژهی ساده و باحال:
شخصی با من تماس گرفت و گفت که این دادهها رو از این سایت میخوام برام بگیرید و در یک دیتابیس قرار بدهید. بیزنس پلن جالبی داشتند. خیلی ساده از کتابخونهی
requests
استفاده کردم و استارت زدیم به گرفتن دیتاها. این سایت محتوای بسیار داینامیکی داره و مدام بروز میشود. متوجه شدم در هر بار که درخواست ارسال میکنیم سمت سرور، فقط 24 رکورد از سمت اونها دریافت میکنیم. از صفحهای که شاید بالای هزار لینک که مرتب هم در حال بروز شدن هست، این حجم از رکوردها جالب نیست و کمه.
در فاصلههای زمانی مختلف، درخواست رو ارسال کردم. متوجه شدم که به محض آپدیت شدن، اون رکورد تازه به من داده میشود. خوشحال شدم که سرور درخواستهای تکراری از سمت یک آی.پی. رو بلاک نمیکند. در این شرایط و در دنیای واقعی راهکارهای مختلفی داره و این به ذهن من رسید که انجامش بدم:
یک اسکریپت بش نوشتم و فایل پایتونی رو داخلش گذاشتم. رفتم سراغ کرونجابزها و هر یک دقیقه درخواستم رو فرستادم سمت سرور. درخواستها بصورت یک فایل سی.اس.وی. در سیستم من (یا میشه در کلاد ذخیره کرد) ذخیره میشوند. مقایسه کردم دیدم که بطور کلی در هر فایل نسبت به قبلی، تعدادی از رکوردها جدید هستند و کلی آیتم تکراری وجود دارد.
دوباره رفتم سراغ پایتون و از پانداز کمک گرفتم. کدی نوشتم که دوتا دوتا فایلها رو بگیره، تبدیل کنه به لیست، بعد با هم جمعشون کنه. بعد دوباره تبدیل کنم به یک دیتافریم و مقادیر تکراری رو حذف کنه. در پایان دوباره تبدیلش کردم به یک فایل سی.اس.وی و در مسیر مشخص ذخیرهاش کردم.
این فرایند رو دو الی سه روز انجام بدهیم، میتونیم کل اون رکوردهایی که مد نظرمون بود را جمعآوری کنیم. خوبی کار روی سناریوهای واقعی اینه که هیچ روش قطعی برای حل مشکل یا سوال وجود ندارد. فقط باید به مقصودمون برسیم. حالا یکی مثل من عمل میکنه. یکی هم روشهای بهینهتری بلد هست و سه سوت کارش رو انجام میدهد. ولی در کل کار باحالیه.
پینوشت: اگر روی سیستم لینوکس ندارید از این سایت هم میشه برای کارهای کرون (Cron Jobs) استفاده کرد:
▶️ https://cron-job.org/
پینوشت2: برای قسمت دوم کار هم یک فایل بش مینویسیم (بسیار ساده هست) که کل فرایند بصورت اتوماتیک انجام بشه. میتونیم روی یک سرور لینوکسی هم این پایپلاین رو مستقر کنیم و فقط 48 ساعت بهش زمان بدیم. خودمون هم در این بین میریم یک سر شمال جوج میزنیم بر بدن 😎😂.
.
#requests
#pandas
#bash_scripting
#linux
#python
==============
@elmedadeir
🚀مهندسی داده و رایانش ابری🚀
.
مقالات || اینستاگرام || لینکدین || یوتیوب
شخصی با من تماس گرفت و گفت که این دادهها رو از این سایت میخوام برام بگیرید و در یک دیتابیس قرار بدهید. بیزنس پلن جالبی داشتند. خیلی ساده از کتابخونهی
requests
استفاده کردم و استارت زدیم به گرفتن دیتاها. این سایت محتوای بسیار داینامیکی داره و مدام بروز میشود. متوجه شدم در هر بار که درخواست ارسال میکنیم سمت سرور، فقط 24 رکورد از سمت اونها دریافت میکنیم. از صفحهای که شاید بالای هزار لینک که مرتب هم در حال بروز شدن هست، این حجم از رکوردها جالب نیست و کمه.
در فاصلههای زمانی مختلف، درخواست رو ارسال کردم. متوجه شدم که به محض آپدیت شدن، اون رکورد تازه به من داده میشود. خوشحال شدم که سرور درخواستهای تکراری از سمت یک آی.پی. رو بلاک نمیکند. در این شرایط و در دنیای واقعی راهکارهای مختلفی داره و این به ذهن من رسید که انجامش بدم:
یک اسکریپت بش نوشتم و فایل پایتونی رو داخلش گذاشتم. رفتم سراغ کرونجابزها و هر یک دقیقه درخواستم رو فرستادم سمت سرور. درخواستها بصورت یک فایل سی.اس.وی. در سیستم من (یا میشه در کلاد ذخیره کرد) ذخیره میشوند. مقایسه کردم دیدم که بطور کلی در هر فایل نسبت به قبلی، تعدادی از رکوردها جدید هستند و کلی آیتم تکراری وجود دارد.
دوباره رفتم سراغ پایتون و از پانداز کمک گرفتم. کدی نوشتم که دوتا دوتا فایلها رو بگیره، تبدیل کنه به لیست، بعد با هم جمعشون کنه. بعد دوباره تبدیل کنم به یک دیتافریم و مقادیر تکراری رو حذف کنه. در پایان دوباره تبدیلش کردم به یک فایل سی.اس.وی و در مسیر مشخص ذخیرهاش کردم.
این فرایند رو دو الی سه روز انجام بدهیم، میتونیم کل اون رکوردهایی که مد نظرمون بود را جمعآوری کنیم. خوبی کار روی سناریوهای واقعی اینه که هیچ روش قطعی برای حل مشکل یا سوال وجود ندارد. فقط باید به مقصودمون برسیم. حالا یکی مثل من عمل میکنه. یکی هم روشهای بهینهتری بلد هست و سه سوت کارش رو انجام میدهد. ولی در کل کار باحالیه.
پینوشت: اگر روی سیستم لینوکس ندارید از این سایت هم میشه برای کارهای کرون (Cron Jobs) استفاده کرد:
▶️ https://cron-job.org/
پینوشت2: برای قسمت دوم کار هم یک فایل بش مینویسیم (بسیار ساده هست) که کل فرایند بصورت اتوماتیک انجام بشه. میتونیم روی یک سرور لینوکسی هم این پایپلاین رو مستقر کنیم و فقط 48 ساعت بهش زمان بدیم. خودمون هم در این بین میریم یک سر شمال جوج میزنیم بر بدن 😎😂.
.
#requests
#pandas
#bash_scripting
#linux
#python
==============
@elmedadeir
🚀مهندسی داده و رایانش ابری🚀
.
مقالات || اینستاگرام || لینکدین || یوتیوب