🕸️ ওয়েব স্ক্র্যাপিং কী?
ধরো তুমি একটা ওয়েবসাইটে ঢুকেছো, সেখানে অনেক তথ্য আছে — যেমন প্রোডাক্ট লিস্ট, নাম, দাম, ছবি ইত্যাদি। তুমি চাও সেই ডেটা গুলো সংগ্রহ করে তোমার নিজস্ব ডাটাবেজে রাখতে। হাত দিয়ে কপি-পেস্ট না করে, আমরা ওয়েব স্ক্র্যাপিং ব্যবহার করি – যেটা একটা বুদ্ধিমান বটের মতো ওয়েবসাইটে গিয়ে প্রয়োজনীয় তথ্য তুলে আনে।
🔧 কোন লাইব্রেরি ব্যবহার করবো?
আমরা সাধারণত তিনটা টুল বা লাইব্রেরি ব্যবহার করি:
| লাইব্রেরি | কাজ | উপকারিতা | সীমাবদ্ধতা |
|---|---|---|---|
| BeautifulSoup | HTML/XML পার্স করা | সহজ, বিগিনারদের জন্য ভালো | JavaScript দিয়ে তৈরি কনটেন্ট স্ক্র্যাপ করতে পারে না |
| Selenium | ব্রাউজার অটোমেশন | JS ওয়েবসাইটেও কাজ করে | ধীরে কাজ করে |
| Scrapy | বড় স্কেল ওয়েব স্ক্র্যাপিং ফ্রেমওয়ার্ক | ফাস্ট, পাওয়ারফুল | শেখা কঠিন |
🎯 শুরুর জন্য কী কী জানা দরকার?
✅ পাইথনের কিছু বেসিক জিনিস:
print("Hello World")- list, dictionary
- for loop
- ফাইল লেখালেখি (file I/O)
- pandas লাইব্রেরি (Data Analysis করার জন্য)
✅ HTML সিলেক্টর জানা
যেহেতু আমরা HTML এর উপর কাজ করব, কিছু সিলেক্টর জানা লাগবে:
👉 ট্যাগ নাম দিয়ে সিলেক্ট:
<div>Hello</div>
<p>Paragraph</p>
div { color: red; }
p { font-size: 14px; }
👉 ক্লাস দিয়ে:
<p class="highlight">This is important</p>
.highlight { font-weight: bold; }
👉 আইডি দিয়ে:
<div id="header">Header Section</div>
#header { background-color: gray; }
👉 কম্বিনেশন:
<div class="container">
<p>This is paragraph</p>
</div>
.container p { color: green; }
🥣 BeautifulSoup দিয়ে শুরু করা যাক!
উদাহরণ ১: একটা সাইট থেকে টাইটেল বের করা
import requests
from bs4 import BeautifulSoup
url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
title = soup.find('title')
print(title.text)
এখানে কী হলো?
requestsদিয়ে পেজ লোড করলামBeautifulSoupদিয়ে HTML পার্স করলাম- তারপর
titleট্যাগ থেকে লেখা বের করলাম
🕹️ JavaScript-heavy সাইটে কী করবো?
সেখানে Selenium লাগবে, কারণ ঐ সাইটগুলোতে ডেটা ডায়নামিক্যালি লোড হয়। উদাহরণ:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com")
heading = driver.find_element(By.TAG_NAME, "h1")
print(heading.text)
driver.quit()
🕷️ বড় স্কেল প্রজেক্টে Scrapy ব্যবহার
Scrapy দিয়ে স্ক্র্যাপ করলে আমরা পাইপলাইনের মাধ্যমে ডেটা প্রসেস, ফাইল বা ডাটাবেজে স্টোর করতে পারি।
scrapy startproject myproject
cd myproject
scrapy genspider example example.com
তারপর স্পাইডার ফাইলে লিখে দাও:
import scrapy
class ExampleSpider(scrapy.Spider):
name = "example"
start_urls = ['https://example.com']
def parse(self, response):
title = response.css('title::text').get()
yield {'title': title}
📚 গল্প দিয়ে ধরলে:
তুমি ধরো বইয়ের দোকানে গেলে, বই খুঁজে বের করে নিজের ব্যাগে রাখো। ওয়েব স্ক্র্যাপিংও তাই করে – ঠিক ডাটা খুঁজে নিয়ে তোমার ডেটাবেজে রাখে। BeautifulSoup একটু বইয়ের ইনডেক্স দেখে কাজ করে, Selenium হলো পুরো দোকানে হেঁটে দেখা, আর Scrapy হলো একসাথে অনেক লোক দিয়ে অনেক দোকান স্ক্যান করে ফেলা!
✅ শেষ কথা
- শুরু করো
BeautifulSoupদিয়ে - যদি সাইটটা জাভাস্ক্রিপ্ট দিয়ে বানানো হয়, তাহলে
Selenium - আর যদি বড় প্রজেক্ট করো (বহু পেজ, অনেক ডেটা), তাহলে
Scrapy