وب اسکرپینگ برای جمعآوری اطلاعات کسبوکارها از Google Maps
هدف پروژه
ایجاد یک اسکریپت وب اسکرپینگ که از یک لیست نامهای کسبوکارها، اطلاعات مرتبط را از Google Maps استخراج کرده و در یک دیتابیس PostgreSQL ذخیره کند. این پروژه از API گوگل استفاده نمیکند و باید از تکنیکهای وب اسکرپینگ مستقیم (با رعایت شرایط و قوانین Google Maps) استفاده شود.
ورودی
• فایل ورودی: یک Table از یک دیتابیس حاوی لیست نامهای کسبوکارها (ستون business_name) و در صورت وجود، اطلاعات اضافی مانند شهر یا کشور (مثلاً city, country) برای دقیقتر کردن جستجو.
• مثال ساختار:
• business_name,city,country
• "کافه لاله","تهران","ایران"
"رستوران دریا","شیراز","ایران"
فرآیند
1. جستجوی خودکار:
o پروژه باید هر نام کسبوکار را در نوار جستجوی Google Maps سرچ کند.
o اگر اطلاعات شهر یا کشور ارائه شده، باید در کوئری جستجو لحاظ شود (مثلاً: کافه لاله تهران).
o برای شبیهسازی رفتار کاربر، از یک مرورگر خودکار (مانند Selenium با WebDriver) استفاده شود و شبیه یک کاربر (agent) عمل کند.
2. استخراج اطلاعات:
o برای هر نتیجه جستجو، اطلاعات زیر (در صورت موجود بودن) از صفحه پروفایل کسبوکار استخراج شود:
نام کامل کسبوکار
آدرس کامل (شامل خیابان، شهر، کد پستی)
شماره تلفن
وبسایت
ساعات کاری
امتیاز (Rating) و تعداد نظرات
دستهبندی کسبوکار (مثلاً رستوران، کافه)
مختصات جغرافیایی (latitude, longitude)
توضیحات یا ویژگیهای اضافی (مانند "مناسب برای خانواده" یا "وایفای رایگان")
o در صورت وجود چند نتیجه برای یک نام، اولین نتیجه معتبر انتخاب شود یا منطقی برای انتخاب بهترین نتیجه پیادهسازی شود (مثلاً تطبیق با شهر) و یا 5نتیجه اول را کامل بررسی کند.
3. مدیریت خطاها:
o اگر نتیجهای برای کسبوکار یافت نشد، باید بهعنوان "Not Found" در دیتابیس ثبت شود.
o مدیریت محدودیتهای نرخ (rate limiting) و شناسایی ربات (CAPTCHA) با تأخیر تصادفی بین درخواستها.
o ذخیره لاگهای خطا برای دیباگ (مثلاً مشکلات اتصال یا ناتوانی در یافتن صفحه).
نیازمندیها
• زبان برنامهنویسی: Python
• مرورگر: Chrome یا Firefox با WebDriver مربوطه
• دیتابیس: PostgreSQL (ورژن 17 یا بالاتر)
• محیط اجرا: سازگار با سیستمعامل لینوکس/ویندوز
• ملاحظات قانونی: رعایت شرایط استفاده از Google Maps (Terms of Service) و استفاده از تأخیرهای مناسب برای جلوگیری از بلاک شدن.
خروجیها
• دیتابیس پرشده: جدول business_data در PostgreSQL با اطلاعات استخراجشده.
• فایل لاگ: فایلی برای ثبت خطاها و وضعیت اجرای اسکریپت (مثلاً scraper.log).
• گزارش پیشرفت: نمایش تعداد کسبوکارهای پردازششده و وضعیت (موفق/ناموفق) در حین اجرا.
الزامات فنی
• مدیریت نرخ درخواستها: تأخیر تصادفی بین 2 تا 5 ثانیه بین هر جستجو برای جلوگیری از شناسایی بهعنوان ربات.
• پایداری: اسکریپت باید در برابر قطعی اینترنت یا خطاهای موقت مقاوم باشد و ادامه فرآیند را از سر بگیرد.
• ماژولار بودن: کد باید ماژولار باشد (مثلاً توابع جداگانه برای جستجو، استخراج، و ذخیرهسازی).
• اسناد: مستندات کامل شامل توضیحات توابع، نحوه راهاندازی، و نصب وابستگیها.
معیارهای پذیرش
• اسکریپت باید حداقل 90% از نامهای ورودی را با موفقیت پردازش کند (در صورت وجود نتیجه در Google Maps).
• اطلاعات ذخیرهشده در دیتابیس باید دقیق و مطابق با دادههای Google Maps باشد.
• اسکریپت نباید توسط Google Maps بلاک شود (حداقل برای 100 جستجو در یک اجرا).
• کد باید شامل تستهای اولیه و مستندات کامل باشد.
• فریلنسر باید تجربه کار با وب اسکرپینگ و Selenium داشته باشد.
• توانایی مدیریت CAPTCHA (در صورت بروز) یا پیشنهاد روشهای جایگزین (مثلاً استفاده از پراکسی).
• ارائه نمونه کد مشابه (در صورت امکان) برای ارزیابی توانایی فریلنسر.
در آخر لطفا پیشنهادات خود را رابطه با قیمت پیشنهادی، زمان انجام کار و یا حتی بابت بهبود پروژه دارید بفرمایید.
سپاسگزارم
این آگهی از وبسایت کارلنسر پیدا شده، با زدن دکمهی تماس با کارفرما، به وبسایت کارلنسر برین و از اونجا برای این شغل اقدام کنین.
هشدار
توجه داشته باشید که دریافت هزینه از کارجو برای استخدام با هر عنوانی غیرقانونی است. در صورت مواجهه با موارد مشکوک، با کلیک بر روی «گزارش مشکل آگهی» به ما در پیگیری تخلفات کمک کنید.