وب اسکرپینگ با پایتون نحوه استفاده از ابزارهای Web Scraping برای استخراج دادهها از سایتها
فهرست مطالب این نوشته
Toggleوب اسکرپینگ با پایتون روشی هوشمندانه برای استخراج دادههای ارزشمند از صفحات وب است که میتواند در بسیاری از پروژههای واقعی مثل تحلیل بازار و یا جمعآوری محتوای هدفمند کاربرد داشته باشد. برای آشنایی بیشتر، همراهمان باشید.

وب اسکرپینگ چیست؟
بهتر است از پایه شروع کنیم؛ وب اسکرپینگ (Web Scraping) فرایند استخراج اطلاعات از وبسایتها است، آن هم به صورت خودکار و برنامهریزیشده.
با استفاده از کدهایی ساده یا گاهی پیچیده، شما میتوانید به محتوای صفحات وب دست پیدا کنید، اطلاعات خاصی را جدا کرده و آنها را در قالبی مثل CSV یا JSON ذخیره کنید.
این روش در دنیای واقعی برای کارهایی مثل آنالیز رقبا، جمعآوری اطلاعات شغلی، استخراج قیمت محصولات، ساخت دیتاستهای یادگیری ماشین و حتی ساخت موتورهای جستجو استفاده میشود.
مزایای وب اسکرپینگ با پایتون چیست؟
در دنیای برنامهنویسی زبانهای زیادی وجود دارد، اما پایتون بیرقیب است وقتی پای وب اسکرپینگ به میان میآید. چرا؟ چون:
- سینتکس سادهای دارد؛ یادگیری و استفاده از آن آسان است.
- کتابخانههای متنوعی برای کار با HTML، HTTP و مرورگرها دارد.
- قابلیت کار با دادهها را بهشکلی فوقالعاده با پکیجهایی مثل کتابخانه Pandas و Numpy ارائه میدهد.
کتابخانههای پایتون برای وب اسکرپینگ را بشناسید!
قبل از اینکه وارد مراحل اسکرپینگ شوید، باید جعبهابزارتان را آماده کنید. در پروژههای حرفهای وب اسکرپینگ با پایتون، شما با سه کتابخانه اصلی سر و کار دارید:
- Requests
- Beautiful Soup
- html5lib یا lxml
در کنار اینها، اگر با صفحات داینامیک مواجه شدید، قطعاً به وب اسکرپینگ با سلنیوم (Selenium) نیاز خواهید داشت که در ادامه به آن میپردازیم.
مراحل گامبهگام وب اسکرپینگ با پایتون
۱. دریافت محتوای صفحه
ابتدا باید با ارسال یک درخواست ساده به صفحه مورد نظر، محتوای آن را دریافت کنید:
import requests
URL = “https://example.com”
headers = {‘User-Agent’: ‘Mozilla/5.0’}
response = requests.get(URL, headers=headers)
print(response.status_code)
html_content = response.content
حتماً بررسی کنید که کد وضعیت پاسخ 200 باشد، چون این یعنی درخواست با موفقیت انجام شده است.
۲. پارس و تجزیه HTML با Beautiful Soup
بعد از اینکه محتوای HTML را دریافت کردید، نوبت استخراج دادههای مورد نظرتان است. در این مرحله از Beautiful Soup استفاده میکنیم:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_content, ‘html.parser’)
یا:
soup = BeautifulSoup(html_content, ‘html5lib’)
با این ابزار میتوانید بهراحتی عناصر HTML را پیدا کنید و اطلاعات آنها را جدا نمایید:
title = soup.find(“h1”).text
links = soup.find_all(“a”)
۳. استخراج اطلاعات خاص از سایت
اگر هدفتان مثلاً استخراج اطلاعات از سایت با پایتون باشد، لازم است فیلترگذاری کنید:
job_cards = soup.find_all(class_=”card-content”)
for card in job_cards:
title = card.find(“h2”).text.strip()
company = card.find(class_=”company”).text.strip()
print(title, “-“, company)
این دقیقا بخشی از یک پروژه وب اسکرپینگ کاربردی است، مثلا برای جمعآوری آگهیهای شغلی.
وب اسکرپینگ با سلنیوم؛ وقتی صفحات جاوااسکریپت دارند
برخی از وبسایتها از تکنولوژیهای داینامیک استفاده میکنند. در این موارد کتابخانههایی مثل کتابخانه Requests و Beautiful Soup دیگر کافی نیستند. باید سراغ ابزارهایی مثل Selenium بروید که قادر است مرورگر را شبیهسازی کند و حتی با المانهای صفحه تعامل داشته باشد.
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get(“https://example.com”)
title = driver.find_element(By.TAG_NAME, “h1”).text
driver.quit()
ذخیرهسازی دادهها
بعد از جمعآوری دادهها، نوبت ذخیرهسازی است. در سادهترین حالت میتوانید از فایل CSV استفاده کنید:
import csv
with open(‘data.csv’, ‘w’, newline=”) as f:
writer = csv.DictWriter(f, fieldnames=[“title”, “company”, “location”])
writer.writeheader()
writer.writerows(jobs)
برای پروژههای پیچیده حتی میتوانید از پایگاهدادههایی مثل SQLite یا PostgreSQL استفاده کنید.
در وب اسکرپینگ به چه مشکلاتی ممکن است بر بخورید؟
کار با وبسایتها همیشه راحت نیست. در مسیر آموزش وب اسکرپینگ، با چالشهایی هم مواجه میشوید:
| مشکل | توضیح | راهحل سریع و موثر |
|---|---|---|
| تغییر ساختار صفحه | کلاسها یا IDها تغییر میکنند | استفاده از selectors عمومیتر یا XPath |
| بلاک شدن IP | درخواست زیاد باعث شناسایی و مسدود شدن میشود | چرخش IP، تأخیر بین درخواستها، هدر مناسب |
| نیاز به ورود به حساب | دادهها فقط برای کاربران لاگینشده قابل دسترسیاند | استفاده از سشن، مدیریت کوکیها |
| محتوا بعد از لود تولید میشود | صفحه با جاوااسکریپت ساخته میشود | استفاده از Selenium برای رندر صفحه |
| محدودیتهای حقوقی | برخی سایتها اجازه استخراج نمیدهند | بررسی robots.txt و رعایت قوانین سایت |
Scrapy را به عنوان ابزار پیشرفته وب اسکرپینگ بلد باشید!
اگر در حال گذراندن مرحله آموزش پایتون متوسط هستید، وقت آن است که با ابزار قدرتمند Scrapy آشنا شوید. این فریمورک برای پروژههای بزرگتر وب اسکرپینگ طراحی شده و امکاناتی مثل مدیریت چندین درخواست همزمان، فیلترهای هوشمند، ذخیرهسازی مستقیم در دیتابیس و… را ارائه میدهد.
آموزش پایتون مقدماتی تا تسلط بر وب اسکرپینگ با آکادمی چابک
اگر شما هم در مسیر آموزش پایتون مقدماتی هستید، شروع وب اسکرپینگ با پایتون میتواند نقطهی عطفی در مسیر یادگیریتان باشد. این مهارت دریچهای به دنیای واقعی دادهها باز میکند و با کمی تمرین و پشتکار، به راحتی میتواند به یک منبع درآمد واقعی تبدیل شود؛ چه به عنوان فریلنسر، چه به عنوان تحلیلگر داده یا توسعهدهنده.
اگر به دنبال یادگیری اصولی و حرفهای این مهارت هستید، ما در آکادمی چابک کنار شما هستیم. آکادمی چابک در زمینه برگزاری دورههای آموزشی برای نیروهای فنی در حوزههای برنامهنویسی، کسبوکار و مهارتهای دیجیتال، فعالیت دارد و مسیر یادگیری شما را هموار میکند.
منبع:


دیدگاهتان را بنویسید