در همه حوزه ها، همیشه تعدادی عبارت وجود دارد که از نظر مفهوم بسیار شبیه هم هستند اما یکی نیستند. در برخی پروژه ها این تجربه برایم پیش آمده است وقتی از افراد می خواهیم تا در مورد موضوعی تحقیق کنند، بیشتر مفاهیم مرتبط با موضوع را جمع آوری می کنند بدون این که توجه ای به جزئیات داشته باشند. البته این نشان دهنده اشتباه آن ها نیست بلکه نیاز به تجربه و دقت بیشتر دارد.
امروز قصد داریم در مورد 2 عنوان که بسیار شبیه هم هستند و حتی افراد با تجربه به صورت ناخواسته، گاهی آن ها را به جای هم به کار می برند، صحبت کنیم: Web Scraping و Web Crawling. در این مقاله قصد نداریم خیلی وارد جزئیات این دو مفهوم شویم و فقط به نکته مهم و کلیدی بین آن ها اشاره می کنیم.
Web Scraping
Web Scraping روشی است که برای استخراج حجم زیادی از داده ها از وب سایت ها استفاده می شود. بعد از استخراج، داده ها را به شکل هایی مانند excel ،XML یا SQL ذخیره می کند. کلمه Scrap به معنی تراشیدن هست. بیاید به این صورت به آن نگاه کنیم که قرار است داده ای را از جایی تراش دهیم.
ابزارهایی که برای این کار مورد استفاده قرار می گیرند، تحت عنوان web scrapers شناخته می شوند. بر اساس نیازمندی ها، آن ها می توانند داده ها را از هر وب سایت در مدت زمان کوتاهی استخراج کنند. این کار برای توسعه داده در یادگیری ماشین و هدف های دیگر بسیار مفید است. scraper ها در چهار مرحله کار خود را انجام می دهند:
- ارسال درخواست به صفحه مورد نظر
- دریافت پاسخ از صفحه مورد نظر
- تجزیه و استخراج پاسخ (در بین افراد شاید عبارت parse کردن را به جای تجزیه شنیده باشید.)
- دانلود داده ها
ابزار های زیادی برای این کار وجود دارد. برخی از ابزارهای رایج Web Scraping عبارت اند از ProWebScraper ، Webscraper.io.
برای کسب اطلاعات بیشتر پیشنهاد می کنم مقاله ی آموزش ساخت ربات Web Scraping با فریمورک Scrapy در سکان آکادمی را مطالعه کنید.
Web Crawling
Web Crawling یا خزیدن وب مشابه خزیدن عنکبوت است (به همین علت در برخی موارد از آن به عنوان spider وب یاد می شود.) اما محل خزیدن در این جا وب است. از یک وب سایت بازدید می کند و صفحه های وب را می خواند و برای موتورهای جستجو index می کند.
ابزارهایی که برای خزیدن در وب استفاده می شوند به عنوان خزنده وب یا عنکبوت شناخته می شوند. مجموعه ای از صفحه های وب، مورد تجزیه و تحلیل قرار می گیرند. لینک های دیگر موجود در هر صفحه که به صفحه های دیگر هست، دنبال می شوند، بنابراین جستجوی عمیقی برای استخراج اطلاعات انجام می دهد.
موتورهای جستجوی معروف مانند گوگل، یاهو و بینگ، خزیدن در وب را انجام می دهند و از این اطلاعات برای index کردن صفحات وب استفاده می کنند. به عنوان مثال می توان به Scrapy و Apache Nutch اشاره کرد.
تفاوت بین Web Scraping و Web Crawling
در جدول زیر سعی کردیم تفاوت های این دو روش را به صورت ساده و خلاصه برایتان بنویسیم.
Web Scraping | Web Crawling |
برای دانلود اطلاعات استفاده می شود. | برای index گذاری صفحه های وب استفاده می شود. |
برای اطلاعات، نیازی به بازدید از تمام صفحه های وب سایت نیست. | از هر صفحه تا آخرین خط برای گرفتن اطلاعات، بازدید می کند. |
Web Scraperدر بیشتر موارد از robots.txtاطاعت نمی کند. | همه ی خزنده های وب از robots.txtاطاعت نمی کنند. |
در مقیاس کوچک و بزرگ انجام می شود. | بیشتر در مقیاس بزرگ مورد استفاده قرار می گیرد. |
زمینه های مورد استفاده از جمله بازاریابی جزئی، جستجوی حقوق و یادگیری ماشین است. | در موتورهای جستجو برای ارائه نتیجه های جستجو به کاربر استفاده می شود. |
حذف داده های تکراری به صورت بخشی از کار Scraper نیست. | حذف داده های تکراری جز جدا نشدنی خزنده ی وب است. |
برای تجزیه و تحلیل پاسخ نیاز به یک عامل خزنده (همان Crawl) و یک تجزیه کننده (Parser) دارد. | فقط به عامل خزنده نیاز دارد. |
با توجه به این که هدف ما از این مقاله مشخص کردن تفاوت های Web Scraping و Web Crawling بود، خیلی در مورد نحوه عملکرد و جزئیات آن ها صحبت نکردیم. به نظر شما چه تفاوت های دیگری بین این دو روش وجود دارد که از قلم ما جا افتاده است؟ لطفا در بخش نظرات، مطالب خودتان را با ما در میان بگذارید.