فرض کن یک روز مدیرت بهت میگه: «برو قیمت تمام گوشی ‌های موبایل رو از ۵ تا سایت فروشگاهی مختلف پیدا کن و توی یک فایل اکسل برام بیار.» احتمالاً اولین فکری که به ذهنت میرسه اینه که ساعت ‌ها بشینی، تب‌ های مختلف رو باز کنی و یکی‌ یکی قیمت ‌ها رو Copy و Paste کنی. اما صبر کن! این کار رو بده به یک ربات تا تو چند ثانیه برات انجامش بده. اینجاست که پای وب‌اسکرپینگ (Web Scraping) به میان میاد! در این مقاله میخوایم ببینیم وب‌اسکرپینگ اصلاً چیه، چرا پایتون بهترین زبان برای این کاره و چطور میتونه زندگی ما رو راحت ‌تر کنه.

وب‌اسکرپینگ دقیقاً چیه؟

به زبان خیلی ساده، وب‌ اسکرپینگ یعنی استخراج خودکار اطلاعات از وب‌سایت ‌ها. تو این روش، ما برنامه ‌ای مینویسیم که مثل یک انسان وارد سایت میشه، کد های سایت (HTML) رو می‌خونه، اطلاعاتی که ما میخوایم (مثل متن، عکس، قیمت، لینک) رو جدا میکنه و در نهایت اون‌ ها رو توی یک فایل منظم (مثل اکسل یا دیتابیس) ذخیره میکنه.

چرا پایتون؟ 

پایتون (Python) برای اسکرپینگ مثل یک چاقوی همه‌ کاره سوئیسی عمل میکنه. کد های پایتون به شدت خوانا و ساده هستند و مهم‌ تر از همه، جامعه برنامه‌ نویس ‌های پایتون کتابخانه‌ های (Libraries) فوق‌ العاده قدرتمندی برای این کار ساختن که کار رو برات مثل آب خوردن میکنه.

ابزارهای اصلی پایتون برای وب‌اسکرپینگ

برای اینکه بهتر با ابزار ها آشنا بشی، برات یک جدول مقایسه ‌ای آماده کردم:

نام کتابخانه (Library) کاربرد اصلی در اسکرپینگ سطح یادگیری کی باید ازش استفاده کنیم؟
Requests دانلود کد های HTML سایت خیلی ساده وقتی فقط میخوای اطلاعات اولیه یک صفحه رو دانلود کنی.
BeautifulSoup جستجو و استخراج دیتا از HTML ساده وقتی سایت ساختار ساده‌ای داره و میخوای مثلاً تگ‌های <p> یا <h1> رو بخونی.
Selenium شبیه سازی مرورگر و سایت‌ های داینامیک متوسط وقتی سایت با جاوا اسکریپت لود میشه یا نیاز به کلیک کردن و لاگین کردن داره.
Scrapy یک فریمورک کامل برای خزش در وب پیشرفته وقتی پروژه بزرگه و میخوای هزاران صفحه رو با سرعت بالا اسکرپ کنی.

کاربرد های خفن وب‌ اسکرپینگ در دنیای واقعی

کاربردهای خفن وب‌اسکرپینگ در دنیای واقعی

شاید با خودت بگی «خب حالا این دیتا ها رو جمع کردم، به چه دردی میخوره؟» کاربردهای وب‌ اسکرپینگ بی ‌نهایته! اینجا چند تا از جذاب‌ ترین‌ هاش رو با هم مرور میکنیم:

  • مقایسه قیمت ‌ها: میتونی رباتی بنویسی که هر روز قیمت یک لپ‌تاپ خاص رو تو سایت‌ های مختلف چک کنه و اگر جایی تخفیف خورد، بهت پیام بده.
  • جمع‌آوری دیتا برای هوش مصنوعی: مدل‌ های هوش مصنوعی برای یادگیری به دیتای زیادی نیاز دارن. اسکرپینگ بهترین راه برای جمع کردن متن، عکس و اطلاعات برای آموزش این مدل ‌هاست.
  • کاریابی هوشمند: میتونی تمام آگهی‌ های استخدام سایت ‌های مختلف که کلمه «برنامه‌نویس پایتون» دارن رو یکجا جمع کنی تا هیچ فرصتی رو از دست ندی.
  • تحلیل بازار مسکن: جمع‌ آوری قیمت خانه‌ ها در محله‌ های مختلف برای پیدا کردن بهترین زمان و مکان سرمایه ‌گذاری.
  • رصد اخبار و رقبا: شرکت‌ ها از اسکرپینگ استفاده میکنن تا ببینن رقبا چه محصولاتی میزنن یا مردم تو شبکه‌ های اجتماعی درباره برندشون چی میگن.

یک نمونه کد خیلی ساده (فقط برای اینکه ببینی چقدر راحته!) 

فرض کن میخوایم عنوان (Title) یک سایت رو با ترکیب Requests و BeautifulSoup بخونیم. کدش فقط همین چند خطه:

import requests
from bs4 import BeautifulSoup
# ۱. آدرس سایتی که می‌خوایم اطلاعاتش رو بگیریم
url = "https://example.com"
# ۲. درخواست می‌دیم تا کدهای سایت رو دانلود کنیم
resp
# ۳. کدها رو می‌دیم به BeautifulSoup تا مرتبشون کنه
soup = BeautifulSoup(response.text, 'html.parser')
# ۴. تگ h1 (عنوان اصلی) رو پیدا می‌کنیم و متنش رو چاپ می‌کنیم
title = soup.find('h1').text
print("عنوان این سایت اینه:", title)

یک نکته خیلی مهم: اخلاق در وب‌ اسکرپینگ!

همون‌طور که تو دنیای واقعی نباید بدون اجازه وارد حریم کسی بشیم، تو دنیای وب هم باید قوانین و اخلاق رو رعایت کنیم:

  1. فایل robots.txt رو چک کن: هر سایتی یک فایل به این اسم داره که توش نوشته ربات‌ ها اجازه دارن کدوم بخش‌ها رو ببینن و کدوم بخش‌ها ممنوعه.
  2. به سرور فشار نیار: اگر ربات تو در یک ثانیه ۱۰۰۰ تا درخواست به یک سایت بفرسته، ممکنه سایت از کار بیفته (شبیه حملات سایبری میشه). همیشه بین درخواست ‌هات چند ثانیه وقفه (Sleep) بنداز.

دیتای شخصی افراد رو جمع نکن: حریم خصوصی آدم ها خط قرمزه!

جمع بندی

وب‌اسکرپینگ مثل یک قدرت ویژه (Superpower) برای برنامه‌ نویس ‌هاست. وقتی یادش بگیری، میبینی که کل اینترنت تبدیل میشه به یک دیتابیس عظیم که میتونی هر اطلاعاتی رو ازش استخراج کنی و کارهای خلاقانه ‌ای باهاش انجام بدی.