خانه --> پایتون --> کتابخانه پایتون برای وب اسکرپ (web scraping)

کتابخانه پایتون برای وب اسکرپ (web scraping)

OSINTدر این مبحث به کتابخانه ی با ارزش پایتون وب اسکرپ (web scraping) به منظور جمع آوری اطلاعات از یک صفحه وب خواهیم پرداخت. همگی میدانیم که یکی از منابع اصلی داده در دنیا امروز، متون و محتوای موجود در سایتهای اینترنتی است. اسکرپ عبارت است از جمع آوری داده از طریق یک برنامه که درخواست خود را به یک سرویس دهنده وب ارسال می‌کند و پس از دریافت پاسخ، داده بدست آمده را تحلیل و اطلاعات مورد نیاز را استخراج می کند. تولید وب اسکرپ ها به قبل از بوجود آمدن API ها برمیگردد. در آن زمان ناگزیر برای به اشتراک گذاری داده‌ها بین سرویس‌ها از وب اسکرپینگ استفاده میشد. ولی الان کاربری آن کمی تغییر کرده و به عنوان یکی از مولفه های جمع آوری اطلاعات شناخته می شوند و امروزه در فضای وب شاهد آن هستیم که وب اسکرپر ها پا به پای خزش گر ها  به جمع آوری اطلاعات مشغول هستند و از قبل میدانیم که جمع آوری اطلاعات جزئی از ارکان کلان داده محسوب میشود.

 پایتون web scraping
وب اسکرپینگ

نکته: در زبان فارسی گاهی وب اسکرپ را به وب تراش یا وب خراش نیز ترجمه کرده اند.

در این مقاله فرض کرده‌ایم که شما آشنایی کامل با پایتون دارید. در غیر اینصورت لینک های زیر را قبل از خواندن ادامه مقاله مطالعه کنید.

تذکر بسیار مهم: توجه داشته داشته باشید بعضی از سایت‌ها اجازه اسکرپت کردن را به شما نمی دهند و فضولی کردن در این سایت ها پیگرد قانونی دارد، پس مواظب باشید که چه سایتی را اسکرپت می کنید و برای خودتان دردسر درست نکنید.

معرفی یک کتابخانه پایتون وب اسکرپ (web scraping)

زبان برنامه نویسی پایتون کتابخانه‌های قدرتمندی در رابطه با این موضوع دارد، که در این مقاله به معرفی یکی از این کتابخانه‌ها می پردازیم. یکی از کتابخانه های معروف پایتون در خواندن و استخراج اطلاعات مفید از صفحات وب ، کتابخانه Scrapy است. Scrapy یک زیرساخت برنامه کاربردی برای خزش  وب سایت‌ها و استخراج داده‌های مختلف با هدف داده کاوی، پردازش اطلاعات و… است. این کتابخانه علاوه بر توانایی خزش وب، امکان استخراج داده‌ها ازطریق واسط های  برنامه نویسی سرویس های اینترنتی نظیر وب سرویس های شرکت آمازون  را هم دارد.

کتابخانه Scrapy  به چند دلیل زیر برای استخراج متون و جمع آوری اطلاعات، مناسب است:

  • اول اینکه یک کتابخانه کامل برای خزش در وب (Crawling) است و با قابلیت دنبال کردن لینک های موجود در هر صفحه دارد.
  • دوم اینکه برای پردازش موازی و همزمان صفحات مختلف و ایجاد خط تولید (pipeline) امکانات مناسب و ساده ای برای افزایش سرعت دارد. 
  • سوم اینکه کار با آن بسیار ساده است و شما می توانید در چند خط ، یک خزنده وب کامل بسازید.
پایتون وب اسکرپ
معماری کتاب خانه پایتون وب اسکرپ (Scrapy)

نصب Scrapy

مشابه سایر برنامه های پایتون کافیست با دستور

pip install scrapy

این کتابخانه را نصب کنید . برای اجرای آن نیاز به نصب بعضی کتابخانه ها و نرم افزارهای موردنیاز آنرا هم داریم که اکثر آنها با دستور فوق به صورت اتومات نصب خواهند شد و تنها چیزی که باقی می ماند نرم افزار PyWin32 است که بعضی امکانات خاص ویندوز را برای برنامه های پایتون، فراهم می کند. آنرا از این آدرس، دانلود و نصب کنید (برای اکثر شما نسخه ۳۲ بیتی نرم افزار مناسب خواهد بود) . اکنون آماده استخراج اطلاعات هستید.

پس از نصب کتابخانه با استفاده از ابزاری که کتابخانه در اختیار ما قرار می‌دهد می‌توانیم برنامه ی خود را اجرا کنیم. برنامه ساده زیر بخشی از اطلاعات بخش موبایل سایت دیجی کالا را استخراج می کند.

**********************************

 

متغیر start_urls دربرنامه، مسیری را که خزش از آنجا شروع می‌شود مشخص می کند. پس از اینکه برنامه اجرا شد و اتصال با سایت برقرار گردید، شیء response که حاوی محتوای بدست آمده است بعنوان ورودی به تابع  parse منتقل می شود. از آنجا که خروجی بدست آمده در قالب json بازگردانده می شود. با استفاده از کتابخانه json خروجی مورد نظر را می‌توان بدست آورد. داده بدست آمده در متغیر ds (Data Set) ذخیره می شود. با استفاده از یک حلقه ساده، داده موجود در ds  را در خروجی چاپ می کنیم.

برای اجرا کردن برنامه فوق در خط فرمان سیستم عامل ویندوز لازم است مسیر C:\Python27\Scripts را به متغیر محیطی Path اضافه کنید. سپس دستور زیر را در محل ذخیره شدن فایل برنامه وارد کنید.

scrapy runspider DigikalaMobileSpider.py

خروجی برنامه فوق بصورت زیر است:

 

 

در انتهای مبحث پایتون وب اسکرپ (web scraping)  کتاب زیر را از انتشارات معروف اورالی در باب این موضوع معرفی می کنیم.

پایتون وب اسکرپ
پایتون وب اسکرپ (web scraping)

آدرس کانال تلگرام سایت بیگ دیتا:

t.me/bigdata_channel

آدرس کانال سروش ما:
https://sapp.ir/bigdata_channel

جهت دیدن سرفصل های دوره های آموزشی بر روی اینجا کلیک کنید.

 

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *