استخراج خزیدن و آنالیز داده های موجود در وبسایت ها با برنامه نویسی پایتون
دادههای موجود در وب یکی از مهمترین منابع به منظور انجام تحلیلهای داده (Data Analysis) و دادهکاوی (Data Mining) هستند. چنین تحلیلهایی با اهداف گوناگون انجام میشوند که از جمله آنها میتوان به عقیدهکاوی و تحلیل احساسات اشاره کرد. مساله شایان توجه در این تحلیلها گردآوری دادههای موجود در وب است که با عنوان «وب اسکرپینگ» (Web Scraping) شناخته شده و امکان انجام آن با بهرهگیری از ابزارها و زبانهای برنامهنویسی گوناگون وجود دارد. از جمله زبانهای برنامهنویسی قابل استفاده برای وب اسکرپینگ، زبان قدرتمند پایتون است که این کار را انجام میدهد. در این راهنما به چگونگی انجام وب اسکرپینگ با استفاده از پایتون پرداخته و مباحث زیر مورد بررسی قرار میگیرند:
وب اسکرپینگ (Web Scraping) چیست؟
چرا نیاز به وب اسکرپینگ است؟
مقدمه
هنگام انجام یک پروژه علم داده، استفاده از دادههای موجود در اینترنت امری بسیار متداول است. افراد اغلب قادر به دسترسی به این دادهها در فرمت CSV یا با استفاده از رابط برنامهنویسی کاربردی (Application Programming Interface | API) هستند. اگرچه، اوقاتی نیز وجود دارد که داده مورد نیاز تحلیلگر صرفا به عنوان بخشی از یک صفحه وب در دسترس است. در شرایطی مانند اینها، تحلیلگر میتواند از روشی با عنوان «وب اسکرپینگ» (web scraping) به منظور دریافت دادهها از صفحه وب به فرمتی که در تحلیلهای خود با آنها کار میکند بهره ببرد. در این مطلب، چگونگی انجام این کار با بهرهگیری از پایتون ۳ (Python3) و کتابخانه Beautiful Soup آموزش داده شده است.
وب اسکرپینگ چیست؟
وب اسکرپینگ، وب هاروستینگ (هرس کردن وب | web harvesting) یا «استخراج دادههای وب» (web data extraction) نوعی «دیتا اسکرپینگ» (data scraping) است که برای استخراج دادهها از وبسایتها مورد استفاده قرار میگیرد. نرمافزارهای وب اسکرپینگ ممکن است به دادههای «وب جهان گستر» (World Wide Web) با استفاده از «پروتکل انتقال ابرمتن» (Hypertext Transfer Protocol) به طور مستقیم یا از طریق یک مرورگر وب دسترسی داشته باشند.
با وجود آنکه وب اسکرپینگ میتواند به صورت دستی توسط کاربر نرمافزار انجام شود، این عبارت معمولا به فرآیند خودکاری مربوط میشود که با استفاده از یک «بات» (bot) یا «خزنده وب» انجام میشود. این کار در واقع نوعی از کپی کردن است که در آن دادههای مشخصی از وب گردآوری و کپی میشوند. این دادهها به منظور انجام بازیابی یا تحلیلهای آتی، به طور معمول در یک پایگاهداده محلی مرکزی یا «صفحه گسترده» (Spreadsheet) کپی میشوند.
چرا تحلیلگران به وب اسکرپینگ نیاز دارند؟
یک سازمان بزرگ نیاز دارد تا خود را با تغییرات اطلاعاتی که در تعداد زیادی از وبسایتها به وقوع میپیوندد به روز نگه دارد. یک وب اسکرپر هوشمند (intelligent web scraper) وبسایتهای جدیدی که باید دادهها را از آنها اسکرپ کند مییابد. رویکردهای هوشمند، دادههای تغییر یافته را تعیین کرده و آنها را بدون بیرون آوردن لینکهای غیر لازم موجود در محتوا، استخراج کرده و به منظور نظارت و استخراج اطلاعات زمان واقعی به طور موثر و کارآمدی در صفحه وب خزش میکنند. پژوهشگر میتواند به سادگی بر چندین وبسایت به طور همزمان نظارت کند، در حالیکه با فرکانس تکرارها نیز به روز است.
وب اسکرپینگ و تحلیل داده
تحلیلگر میتواند شاهد تغییرات دائما در حال وقوع در وب باشد. اما اگر تغییرات کلیدی توسط یک سازمان به وقوع پیوست، چگونه میتوان متوجه آنها شد؟ فرض میشود که تغییری در کارکنان یک سازمان به وقوع پیوسته، چگونه میتوان از آن مطلع شد؟ پاسخگویی به این پرسشها همان نقطهای است که وب اسکرپینگ و ویژگیهای آن برجسته میشوند. روشهای وب اسکرپینگ هوشمند کاربران را از آخرین تغییرات به وقوع پیوسته در یک وبسایت مشخص آگاه و بنابراین به آنها در تحت نظر داشتن چالشها و فرصتها کمک میکنند.
Scrapy چیست؟
Scrapy یک فریمورک web crawling سریع و متن باز است که با زبان برنامه نویسی Python نوشته شده است که برای استخراج داده ها از صفحه وب با کمک selector ها بر اساس XPath استفاده می شود.
Beautiful Soup چیست ؟
Beautiful Soup یک کتابخانه پایتون برای استخراج داده ها از فایل های HTML و XML است که می توان زمانیکه داده ها از جاوا اسکریپت استخراج یا به صورت پویا بارگذاری می شوند از آن به راحتی استفاده کرد.
از جمله پروژه هایی که توسط گروه برنامه نویسی سپاهان نیاز انجام شده است :
- استخراج ایمیل و شماره تلفن ها از سایت های آگهی و تبلیغاتی همچون دیوار و شیپور
- تحلیل اطلاعات یک وبسایت
به طور مثال پروٰژه ای برای شخصی انجام شد که اطلاعات دریافت میکرد از وبسایت بورس یاهو و بوسیله نرم افزار SPSS آمار و اطلاعات را بر روی جدول و نمودار قرار دادیم.
اگر شما هم بدنبال ساخت یک پروژه برای خود هستید با ما در تماس باشید.