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

اما داده های وب تنها به صورت تگ های HTML نیستند بلکه فرمت های متفاوتی برای ارائه داده ها وجود دارد. در ادامه فهرستی از فرمت های مختلفی که بر روی وب برای ارائه داده ها استفاده می شود را فهرست کرده ایم.

۱ – فایل های CSV و Excel

۲ – فایل های JSON

۳ – فایل های XML

۴ – فرمت  RDF یا Resource Description Framework

بنابراین می بینید که برای پردازش فرمت های مختلف باید ابزارهای مختلف را استفاده کرد. نکته مهم این است که کدام زبان را برای انجام پروژه های وب اسکرپینگ انتخاب کنیم؟ آیا زبانی که انتخاب می کنیم قابلیت و توانایی کامل برای بر طرف کردن نیازمندی های ما را دارد؟

کدام زبان برنامه نویسی

شما می توانید از هر زبان برنامه نویسی مانند جاوا یا سی شارپ و هر زبان برنامه نویسی دیگری که امکانات و کتابخانه های لازم برای باز کردن و خواندن صفحه های وب و دسترسی به تگ های HTML را داشته باشد، استفاده کنید ولی ما در این دوره زبان پایتون را استفاده کرده ایم. توجه کنید که گام های انجام وب اسکرپینگ به صورت زیر است

 ۱ – انتخاب یک یا چندین URL و یا حتی کل یک سایت برای استخراج محتوای آن که می تواند شامل متن، تصویر، صدا، ویدیو و دیگر فایل ها باشد.

۲ – پیش از انجام وب اسکرپینگ توسط ابزارهای در دسترس مانند ابزار Inspect در Chrome یک بررسی بر روی تگ ها و نام class ها , id های هر یک از تگ های مورد نظر داشته باشیم.

۳ – نصب و ضمیمه کردن مازول دلخواه برای باز کردن و خواندن محتوای URL ها – در پایتون ماژول پیشفرض به نام urllib و همچنین ماژول دیگری به نام requests وجود دارد.

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

ماژول های پایتون برای وب اسکرپینگ

همانطور که گفتیم دو گام اصلی در وب اسکرپینگ، باز کردن و خواندن محتوای صفحه وب و سپس دسترسی به تگ های درون صفحه است. پایتون برای کار با درخواست های HTTP برای دسترسی به یک صفحه وب دارای ماژول درونی به نام urllib است که ما در این دوره از آن استفاده می کنیم ولی در کنار این ماژول، ماژول دیگری به نام requests وجود دارد که عملکرد آن نیز شبیه به urllib است.

BeautifulSoup نام اصلی ترین و پر کاربردترین ماژول برای وب اسکرپینگ و دسترسی به تگ های درون صفحه وبی است که توسط یکی از ماژول های urllib یا requests باز شده است. در این دوره تمرکز ما بر روی همین ماژول BeautifulSoup است. در زمان نوشتن این مطلب، نسخه ۴ از ماژول BeautifulSoup وجود دارد.

از این پس در این دوره ماژول BeautifulSoup را bs4 می نامیم.

اما آیا ماژول bs4، تنها است که در پایتون برای وب اسکرپینگ وجود دارد؟ پاسخ نه است. پایتون دارای ماژول های فروان دیگری است که در ادامه آنها را به طور کامل فهرست کرده ایم.

۱ – ماژول urllib.request برای باز کردن یک URL

۲ – ماژول requests برای باز کردن یک URL

۳ – ماژول bs4 برای دسترسی به تگ های HTML

۴ – ماژول Scrapy برای

۵ – ماژول Selenium

در کنار ماژول های بالا، برخی دیگر از ماژول ها بسته به هدف و نیاز شما لازم و ضروری هستند. به طور مثال برای جستجو یک الگو در میان محتوای بدست آمده از طریق ماژول های وب اسکرپینگ، نیاز به ماژول re (عبارت های باقاعده) داریم.

به طور مثال می خواهیم تعداد تکرار هر یک از واژه های درون صفحه وب را پیدا کنیم و سپس آنهایی که بیش از n مرتبه تکرار شده اند را نمایش دهیم. در این مورد ممکن است بخواهید از ماژول Counter استفاده کنید. بنابراین بسته به هدف و نیاز و کاربردی که می خواهید پیاده سازی کنید، باید از ماژول های مختلفی استفاده کنید تا برنامه ای کامل را بنویسید.

اما همانطور که توضیح دادیم داده های وب تنها در صفحه های وب (Web Pages) وجود ندارند. امروزه سایت هایی زیادی هستند که داده ها را به فرمت JSON (مخفف JavaScript Object Notation) در اختیار دیگران قرار می دهد. تنها کاری که باید انجام دهیم:

۱ – احتمالا ثبت نام در سایت

۲ – دریافت API KEY برای احراز هویت

۳ – سپس ارسال درخواست نوع GET و از طریق URL، برای دریافت داده های مورد نظر.

بنابراین می توانیم نتیجه بگیریم که JSON فرمتی برای تبادل اطلاعات (Information Exchange) است که مستقل از برنامه، پلتفرم و زبان برنامه نویسی است.