Python-এ BeautifulSoup একটি শক্তিশালী লাইব্রেরি যা HTML এবং XML ডেটা পার্স করার জন্য ব্যবহৃত হয়। BeautifulSoup এর মাধ্যমে ওয়েব পেজ থেকে প্রয়োজনীয় ডেটা সহজে খুঁজে বের করে প্রক্রিয়াকরণ করা সম্ভব।
BeautifulSoup ইনস্টলেশন
প্রথমে BeautifulSoup লাইব্রেরিটি ইন্সটল করতে হবে। এটি ইন্সটল করার জন্য নিচের কমান্ডটি চালান:
pip install beautifulsoup4
BeautifulSoup দিয়ে HTML পার্সিং এর ধাপসমূহ
- HTML ডেটা লোড করা: Requests বা অন্য কোন মাধ্যম ব্যবহার করে HTML ডেটা সংগ্রহ করা।
- BeautifulSoup দিয়ে HTML ডেটা পার্স করা: BeautifulSoup এর মাধ্যমে HTML ডেটাকে একটি গঠনমূলক স্ট্রাকচারে রূপান্তর করা।
- নির্দিষ্ট ট্যাগ থেকে ডেটা এক্সট্রাক্ট করা:
find(),find_all(), এবংselect()ফাংশন ব্যবহার করে প্রয়োজনীয় ডেটা সংগ্রহ করা।
উদাহরণ কোড
ধরুন, আমরা নিচের HTML কোডটি ব্যবহার করব এবং এতে থাকা শিরোনাম, প্যারাগ্রাফ এবং লিংকগুলো পার্স করব:
<html>
<head><title>Sample Page</title></head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
<p class="intro">This is another paragraph with class intro.</p>
<a href="https://example.com">Visit Example</a>
</body>
</html>
কোড: BeautifulSoup দিয়ে HTML পার্সিং
from bs4 import BeautifulSoup
# HTML কোডটি BeautifulSoup এ পাঠানো
html_content = """
<html>
<head><title>Sample Page</title></head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
<p class="intro">This is another paragraph with class intro.</p>
<a href="https://example.com">Visit Example</a>
</body>
</html>
"""
# BeautifulSoup অবজেক্ট তৈরি
soup = BeautifulSoup(html_content, 'html.parser')
# ১. শিরোনাম (title) বের করা
title = soup.title.text
print("Title:", title)
# ২. প্রথম <h1> ট্যাগ বের করা
heading = soup.find('h1').text
print("Heading:", heading)
# ৩. সব <p> ট্যাগ বের করা
paragraphs = soup.find_all('p')
for i, para in enumerate(paragraphs, 1):
print(f"Paragraph {i}:", para.text)
# ৪. নির্দিষ্ট ক্লাস সহ <p> ট্যাগ বের করা
intro_para = soup.find('p', class_='intro').text
print("Intro Paragraph:", intro_para)
# ৫. লিংক বের করা
link = soup.find('a')
link_text = link.text
link_url = link.get('href')
print("Link Text:", link_text)
print("Link URL:", link_url)
আউটপুট
Title: Sample Page
Heading: This is a heading
Paragraph 1: This is a paragraph.
Paragraph 2: This is another paragraph with class intro.
Intro Paragraph: This is another paragraph with class intro.
Link Text: Visit Example
Link URL: https://example.com
BeautifulSoup এর কিছু গুরুত্বপূর্ণ ফাংশন
soup.find(): প্রথম ম্যাচিং ট্যাগটি খুঁজে বের করে।
first_para = soup.find('p')
print(first_para.text)
soup.find_all(): নির্দিষ্ট ট্যাগের সব ম্যাচিং ট্যাগ খুঁজে বের করে।
all_paragraphs = soup.find_all('p')
for para in all_paragraphs:
print(para.text)
soup.select(): CSS সিলেক্টর ব্যবহার করে নির্দিষ্ট ট্যাগ খুঁজে বের করে।
intro_para = soup.select('.intro')[0]
print(intro_para.text)
get(): ট্যাগের নির্দিষ্ট অ্যাট্রিবিউটের মান পাওয়ার জন্য ব্যবহৃত হয়।
link = soup.find('a')
print(link.get('href'))
soup.text: HTML ডেটার সমস্ত টেক্সট একসাথে প্রদর্শন করে।
print(soup.text)
BeautifulSoup দিয়ে কাজ করার জন্য কিছু টিপস
- নির্দিষ্ট আইডি এবং ক্লাস দিয়ে HTML এলিমেন্ট খুঁজুন, কারণ এটি দ্রুত এবং নির্ভুল ফলাফল প্রদান করে।
- CSS সিলেক্টর ব্যবহার করে জটিল HTML কাঠামো থেকে সহজে ডেটা বের করা যায়।
- যদি অনেক HTML ট্যাগ থাকে, তবে
find_all()ব্যবহার করে লিস্ট আকারে ডেটা পাওয়া যায়।
উপসংহার
BeautifulSoup একটি সহজ ও শক্তিশালী টুল যা দিয়ে ওয়েব পেজ থেকে ডেটা স্ক্র্যাপ ও পার্স করা সহজ। এটি HTML এর প্রতিটি এলিমেন্টে অ্যাক্সেস করতে পারে এবং ডেটা প্রক্রিয়াকরণের জন্য অত্যন্ত কার্যকরী।