با ما در ارتباط باشید

آموزش وب اسکریپینگ با پایتون در 3 مرحله ساده

19 بازدید

آنچه در این مقاله می خوانید:

وب اسکریپینگ با پایتون به شما امکان می‌دهد به‌سادگی اطلاعات موردنیازتان را از وب‌سایت‌ها استخراج کنید. با استفاده از کتابخانه‌هایی مثل `requests` برای دریافت صفحات و `BeautifulSoup` برای تجزیه HTML، می‌توانید به داده‌های داخل تگ‌ها، لینک‌ها و دیگر عناصر HTML دسترسی پیدا کنید. برای سایت‌های پویا که با جاوااسکریپت بارگذاری می‌شوند نیز می‌توان از ابزارهایی مانند `Selenium` بهره برد. رعایت قوانین سایت، افزودن هدرهای مناسب، مدیریت خطاها و ذخیره‌سازی داده‌ها (مثلاً در فایل CSV) از نکات کلیدی در اسکریپینگ حرفه‌ای هستند. پایتون با ابزارهای متنوع و جامعه فعالش، این فرایند را ساده و کارآمد می‌سازد.

استخراج اطلاعات از وب‌سایت‌ها یا همان وب اسکریپینگ (Web Scraping) یکی از مهارت‌های جذابی است که با پایتون می‌توانید به‌راحتی یاد بگیرید و از آن برای جمع‌آوری داده‌های موردنیازتان استفاده کنید. فرقی نمی‌کند بخواهید قیمت محصولات یک فروشگاه آنلاین را بررسی کنید، اخبار را جمع‌آوری کنید یا داده‌های تحقیقاتی را از سایت‌ها استخراج کنید؛ پایتون ابزارهای قدرتمندی برای این کار در اختیارتان قرار می‌دهد. در این مقاله، به شما نشان می‌دهیم که چگونه با پایتون از سایت اطلاعات استخراج کنیم، چه ابزارهایی نیاز دارید و چطور می‌توانید کدهایتان را بهینه و جذاب بنویسید. با ما همراه باشید!

چرا وب اسکریپینگ با پایتون؟

چرا وب اسکریپینگ با پایتون؟

پایتون به دلیل سادگی، انعطاف‌پذیری و کتابخانه‌های قدرتمندش یکی از بهترین زبان‌ها برای وب اسکریپینگ است. کتابخانه‌هایی مثل BeautifulSoup، Scrapy و Requests کار را برای شما ساده می‌کنند. علاوه بر این، جامعه بزرگ برنامه‌نویسان پایتون و منابع آموزشی فراوان باعث شده‌اند که یادگیری این مهارت برای مبتدیان هم راحت باشد. حالا بیایید قدم‌به‌قدم ببینیم چگونه می‌توانید با پایتون از یک وب‌سایت اطلاعات استخراج کنید.

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

برای شروع، باید چند ابزار و کتابخانه را نصب کنید. نگران نباشید، نصب این ابزارها بسیار ساده است. در ادامه لیستی از مهم‌ترین کتابخانه‌های پایتون برای وب اسکریپینگ را آورده‌ایم:

  1. Requests: برای ارسال درخواست‌های HTTP به وب‌سایت‌ها و دریافت محتوای صفحات.
  2. BeautifulSoup: برای تجزیه (پارس کردن) کد HTML و استخراج اطلاعات موردنظر.
  3. lxml: یک پارس‌کننده سریع‌تر که گاهی همراه با BeautifulSoup استفاده می‌شود.
  4. Scrapy: یک فریم‌ورک کامل برای پروژه‌های وب اسکریپینگ بزرگ‌تر.
  5. Selenium: اگر نیاز به تعامل با صفحات پویا (مثل صفحاتی که با جاوااسکریپت لود می‌شوند) دارید.

برای نصب این کتابخانه‌ها، می‌توانید از دستور زیر در ترمینال یا خط فرمان استفاده کنید:

pip install requests beautifulsoup4 lxml scrapy selenium

قدم اول: ارسال درخواست به وب‌سایت

اولین قدم برای استخراج اطلاعات، دریافت محتوای صفحه وب است. کتابخانه Requests این کار را برای شما انجام می‌دهد. فرض کنید می‌خواهید اطلاعاتی از یک وب‌سایت نمونه مثل example.com استخراج کنید. کد زیر را امتحان کنید:

import requests

url = "https://example.com"

response = requests.get(url)

if response.status_code == 200:

    print("درخواست با موفقیت انجام شد!")

    page_content =[response.text]

else:

    print("خطا در دریافت صفحه!")
Python

در این کد، ما یک درخواست GET به وب‌سایت ارسال می‌کنیم و اگر پاسخ با کد وضعیت 200 (موفق) برگردد، محتوای صفحه را در متغیر page_content ذخیره می‌کنیم.

قدم دوم: تجزیه HTML با BeautifulSoup

حالا که محتوای صفحه را داریم، باید اطلاعات موردنظرمان را از کد HTML استخراج کنیم. اینجا BeautifulSoup وارد بازی می‌شود. این کتابخانه به شما امکان می‌دهد تا به‌راحتی تگ‌های HTML را پیدا کنید و اطلاعات داخل آن‌ها را استخراج کنید. به مثال زیر توجه کنید:

from bs4 import BeautifulSoup

# فرض کنید page_content محتوای HTML صفحه است

soup = BeautifulSoup(page_content, 'html.parser')

# پیدا کردن تمام تگ‌های h1

headings = soup.find_all('h1')

for heading in headings:

    print(heading.text)
Python

در این کد، ما تمام تگ‌های <h1> را پیدا کرده و متن داخل آن‌ها را چاپ می‌کنیم. شما می‌توانید به جای h1 هر تگ دیگری مثل div، p یا a را جستجو کنید.

قدم سوم: استخراج اطلاعات خاص

فرض کنید می‌خواهید لیست تمام لینک‌های موجود در یک صفحه را استخراج کنید. می‌توانید از کد زیر استفاده کنید:

links = soup.find_all('a')

for link in links:

    href = link.get('href')

    if href:

        print(href)
Python

این کد تمام تگ‌های <a> را پیدا می‌کند و ویژگی href (لینک) آن‌ها را چاپ می‌کند. اگر بخواهید اطلاعات پیچیده‌تری مثل جدول قیمت محصولات یا نظرات کاربران را استخراج کنید، کافی است ساختار HTML صفحه را بررسی کنید و تگ‌ها و کلاس‌های مربوطه را هدف قرار دهید.

نکات مهم برای وب اسکریپینگ حرفه‌ای

  1. رعایت قوانین وب‌سایت: همیشه فایل robots.txt وب‌سایت را بررسی کنید تا ببینید کدام بخش‌ها قابل اسکریپینگ هستند. برخی سایت‌ها ممکن است محدودیت‌هایی برای اسکریپینگ داشته باشند.
  2. مدیریت خطاها: همیشه کد خود را طوری بنویسید که در برابر خطاها (مثل قطعی اینترنت یا تغییر ساختار سایت) مقاوم باشد.
  3. استفاده از هدرها: برای جلوگیری از بلاک شدن توسط سایت، هدرهای مناسب (مثل User-Agent) به درخواست‌های خود اضافه کنید:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/91.0.4472.124'}

response = requests.get(url, headers=headers)
Python
  1. ذخیره‌سازی داده‌ها: اطلاعات استخراج‌شده را می‌توانید در فایل‌های CSV، JSON یا دیتابیس ذخیره کنید. برای مثال، ذخیره در فایل CSV:
import csv

with open('data.csv', 'w', newline='', encoding='utf-8') as file:

    writer = csv.writer(file)

    writer.writerow(['عنوان', 'لینک'])

    for link in links:

        writer.writerow([link.text, link.get('href')])
Python

وب اسکریپینگ پویا با Selenium

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

from selenium import webdriver

from selenium.webdriver.chrome.service import Service

from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

driver.get("https://example.com")

# صبر کردن تا لود شدن صفحه

driver.implicitly_wait(10)

# پیدا کردن عناصر

elements = driver.find_elements_by_tag_name('h1')

for element in elements:

    print(element.text)

driver.quit()
Python

چالش‌ها و راه‌حل‌ها

وب اسکریپینگ همیشه ساده نیست. گاهی با مشکلاتی مثل بلاک شدن IP، CAPTCHA یا ساختار پیچیده HTML مواجه می‌شوید. برای حل این مشکلات:

  • از پراکسی‌ها یا سرویس‌های چرخش IP استفاده کنید.
  • زمان‌بندی درخواست‌ها را با تأخیر (مثل time.sleep(2)) تنظیم کنید تا شبیه ربات به نظر نیایید.
  • برای سایت‌های پیچیده، از Scrapy استفاده کنید که امکانات پیشرفته‌تری مثل خزیدن خودکار در صفحات دارد.

برای آموزش کامل و گام‌به‌گام وب اسکریپینگ، می‌توانید مقاله‌ی عالی سایت Real Python را مطالعه کنید

جمع‌بندی

وب اسکریپینگ با پایتون نه‌تنها یک مهارت کاربردی است، بلکه می‌تواند بسیار سرگرم‌کننده باشد! با استفاده از ابزارهایی مثل Requests، BeautifulSoup و Selenium، می‌توانید تقریباً از هر وب‌سایتی اطلاعات استخراج کنید. فقط یادتان باشد که همیشه اخلاقی عمل کنید و قوانین وب‌سایت‌ها را رعایت کنید. حالا که این راهنما را خواندید، آماده‌اید که پروژه اسکریپینگ خودتان را شروع کنید؟ کدنویسی را شروع کنید و داده‌های موردنظرتان را جمع‌آوری کنید!

برای کسب اطلاعات بیشتر از وبسایت سبک کار دیدن کنید.

ارسال دیدگاه
0 0 رای ها
Article Rating
اشتراک در
اطلاع از
guest
0 Comments
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
جدیدترین مقالات

فهرست مطالب

0
افکار شما را دوست داریم، لطفا نظر دهید.x