প্রয়োজনীয় লাইব্রেরি
pip install bs4 requests
পদ্ধতি
requests.get()দিয়ে HTML ফেচ করুনBeautifulSoupদিয়ে পার্স করুন- ব্রাউজারের ইন্সপেক্ট টুল দিয়ে টার্গেট এলিমেন্ট খুঁজুন
find(),find_all(), CSS সিলেক্টর ব্যবহার করে ডেটা এক্সট্রাক্ট করুন
উদাহরণ: ভারতের উইকিপিডিয়া পেজ থেকে মোটো (Motto) এক্সট্রাক্ট
import requests
import bs4
URL = "https://en.wikipedia.org/wiki/India"
# HTTP রিকোয়েস্ট
response = requests.get(URL)
# HTML পার্স
soup = bs4.BeautifulSoup(response.text, 'html.parser')
# ইনফোবক্স টেবিল খুঁজুন
infobox = soup.find('table', {'class': 'infobox'})
# ৩য় সারি (tr) - মোটো থাকে
third_tr = infobox.find_all('tr')[2]
# নেস্টেড এলিমেন্ট থেকে টেক্সট এক্সট্রাক্ট
first_a = third_tr.div.find('a')
div = third_tr.div.div
motto = f"{first_a.text} {div.text[:len(div.text) - 3]}"
print(motto)
# আউটপুট: Satyameva Jayate "Truth Alone Triumphs"
গাণিতিক সিলেক্টর ব্যবহার (আধুনিক)
# CSS সিলেক্টর দিয়ে সরাসরি টার্গেট
motto_cell = soup.select_one('table.infobox tr:nth-of-type(3) div')
# বা আরও স্পেসিফিক
motto_text = soup.select_one('table.infobox tr:has(th:contains("Motto")) td')
বেস্ট প্র্যাক্টিস
User-Agentহেডার সেট করুন (ব্লক এড়াতে)try-exceptদিয়ে নেটওয়ার্ক/পার্সিং এরর হ্যান্ডল করুনtime.sleep()দিয়ে রেট লিমিট মেনটেইন করুনrobots.txtচেক করুন
উপসংহার
BeautifulSoup + Requests দিয়ে উইকিপিডিয়া স্ক্রেপিং সহজ। ইনফোবক্স স্ট্রাকচাররেগুলার, তাই রিলায়েবল এক্সট্রাকশন সম্ভব। প্রোডাকশনে wikipedia-api লাইব্রেরি ব্যবহার করুন।