آموزش اسکرپی (Scrapy)

آنچه در این صفحه می خوانید:

معرفی اسکرپی (Scrapy)

اسکرپی (Scrapy) یک فریمورک وب اسکرپینگ آزاد و اوپن سورس است که در پایتون نوشته شده است. اسکرپی در اصل برای وب اسکرپینگ طراحی شده است، همچنین می تواند برای استخراج داده ها با استفاده از API ها یا به عنوان یک وب اسکرپینگ همه منظوره استفاده شود. این شرکت در حال حاضر توسط شرکت Scrapinghub Ltd، یک شرکت توسعه وب اسکرپینگ و سرویس وب نگهداری می شود.

معماری پروژه Scrapy بر پایه "اسپایدر ها" ساخته شده است. اسکرپینگ ها خود حاوی مجموعه ای از دستورالعمل ها هستند. Scrapy همچنین Shell وب اسکرپینگ را ارائه می دهد، که توسط توسعه دهندگان می تواند فرضیه های خود را در مورد رفتار یک سایت آزمایش کند.

وب اسکرپینگ چیست؟

وب اسکرپینگ (Web Scraping) یک تکنیک برای جمع آوری داده ها یا اطلاعات در صفحات وب است. با استفاده از اسکرپر وب، می توانید اطلاعات مربوط به مجموعه ای از محصولات را بدست آورید، یک کالای بزرگ از متن یا داده های کمی تهیه کنید تا آن ها را تحلیل کنید، از یک سایت بدون API رسمی اطلاعات دریافت کنید، یا فقط کنجکاوی شخصی خود را برآورده کنید.

ویژگی های اسکرپی (Scrapy)

Scrapy بسیاری از ویژگی های قدرتمند را برای آسان و کارآمد کردن اسکرپینگ فراهم می کند، مانند:

  • پشتیبانی داخلی برای انتخاب و استخراج داده ها از منابع اچ تی ام ال (HTML) / اکس ام ال (XML) با استفاده از انتخاب گر های سی اس اس (CSS) و اکسپریشن های XPath، با روش های کمکی برای استخراج با استفاده از عبارت های منظم (Regex).
  • کنسول شل تعاملی (IPython) برای تست کردن عبارات CSS و XPath و همچنین برای اسکرپینگ داده ها، هنگام نوشتن یا دیباگینگ اسپایدر ها بسیار مفید است.
  • پشتیبانی داخلی برای تولید اکسپورت فید در فرمت های مختلف (JSON ،CSV ،XML) و ذخیره آنها در چندین زمینه (FTP ،S3، سیستم فایل محلی)
  • پشتیبانی و رمزگذاری قوی برای مقابله با اعلامیه های رمزگذاری خارجی، غیر استاندارد.
  • پشتیبانی از قابلیت توسعه گسترده، باعث می شود عملکرد خود را با استفاده از سیگنال ها و یک API خوب تعریف شده (پلاگین و خطوط ارتباطی) وصل کنید.
  • طیف گسترده ای از برنامه های افزودنی داخلی برای کنترل:
    • کوکی ها و کار با سشن ها
    • ویژگی های HTTP مانند فشرده سازی، تأیید اعتبار، حافظه پنهان کش
    • ترفند user-agent
    • robots.txt
    • محدودیت عمق اسکرپینگ
  • کنسول Telnet برای اتصال به کنسول پایتون که در فرآیند Scrapy شما اجرا می شود. همچنین برای دیباگینگ در اسکرپینگ کاربرد دارد.
  • بعلاوه، موارد خوب دیگری مانند اسپایدر ها برای اسکرپینگ سایت ها از جمله نقشه های سایت و فیدهای XML / CSV، خط ارتباطی مدیا برای دانلود خودکار تصاویر (یا هر مدیای دیگر) مرتبط با آیتم های اسکرپ شده، حافظه ذخیره کننده DNS و موارد دیگر!

مزایای استفاده از اسکرپی (Scrapy)

  • ساخت و مقیاس کردن پروژه های بزرگ crawling
  • دارای مکانیزم ساخته شده به نام Selectors، برای استخراج داده ها از وب سایت ها
  • مدیریت سریع و غیر هم زمان درخواست ها
  • تنظیم خودکار سرعت crawling با استفاده از مکانیزم خودکار
  • تضمین قابلیت دسترسی برای توسعه دهندگان
  • Scrapy به راحتی قابل گسترش، سریع و قدرتمند است.
  • فریمورک اپلیکیشن cross-platform (ویندوز، لینوکس، سیستم عامل مک و BSD)
  • درخواست های Scrapy زمان بندی شده و به صورت غیرهمزمان پردازش می شوند.
  • Scrapy با سرویس داخلی به نام Scrapyd می آید که اجازه می دهد پروژه های خود را آپلود و Spider ها را با استفاده از سرویس وب جی سان (JSON) کنترل کند.
  • Scrap کردن هر وب سایتی امکان پذیر می باشد، حتی اگر API برای دسترسی به داده های خام نداشته باشد.

مقایسه اسکرپی (Scrapy) و بیوتیفول سوپ (Beautiful Soup)

Scrapy یک Web-spider یا فریمورک web scraper می باشد که به آن یک مسیر URL می دهید تا شروع به crawling کند. سپس می توانید مشخص کنید چه تعداد URL می خواهید crawl و fetch شوند. در واقع Scrapy یک فریمورک کامل برای web-scraping یا crawling است. اما Scrapy زمانیکه داده ها از جاوااسکریپت استخراج یا به صورت پویا بارگذاری می شوند دارای محدودیت هایی است که می توانیم با استفاده از بسته هایی مانند splash، سلنیوم و غیره بر آنها غلبه کنیم.

بیوتیفول سوپ (Beautiful Soup) یک کتابخانه تجزیه کننده است که محتویات را از URL استخراج می کند و اجازه می دهد تا شما برخی از بخش های مهم را بدون هیچ زحمتی تجزیه کنید. فقط محتویات URL که شما انتخاب کرده اید را استخراج می کند و سپس آن را متوقف می کند. هیچ گاه کار crawl را انجام نمی دهد مگر اینکه به صورت دستی آن را در داخل یک حلقه بی نهایت با معیارهای خاص قرار دهید. Beautiful Soup یک کتابخانه پایتون برای استخراج داده ها از فایل های HTML و XML است که می توان زمانیکه داده ها از جاوااسکریپت استخراج یا به صورت پویا بارگذاری می شوند از آن به راحتی استفاده کرد.

به طور خلاصه با Beautiful Soup می توانید چیزی شبیه Scrapy را بسازید. Beautiful Soup یک کتابخانه است در حالی که Scrapy یک فریمورک کامل است. Scrapy با Beautiful Soup یکی از بهترین ترکیب هایی است که ما می توانیم برای scraping محتواهای استاتیک و پویا استفاده کنیم.

نظرتون درباره این نوشته چیه؟ عالیه بد نیست خوب نبود