ওয়েব স্ক্র‍্যাপিংয়ে হাতেখড়ি, পাইথন বিউটিফুল সোপ, beautifulsoup tutorial bangla, পাইথনে ওয়েব স্ক্র‍্যাপিং টিউটোরিয়াল
বিউটিফুলসোপ দিয়ে ওয়েব স্ক্র‍্যাপিং

নতুন নতুন যদি কেউ পাইথনে ওয়েব স্ক্র‍্যাপিং শিখতে চায় তবে তার কাছে, তবে সর্বপ্রথম সে যে প্যাকেজটা শিখতে চাইবে সেটা নিঃসন্দেহে BeautifulSoup 4. হুম!

তাহলে চল প্রথমে সংক্ষেপে জেনে নেওয়া যাক, ওয়েব স্ক্র‍্যাপিং কী জিনিস?

ওয়েব স্ক্র্যাপিং কি?

অতি সংক্ষেপে, ইন্টারনেট থেকে ডাটা আহরণ করাকেই ওয়েব স্ক্র্যাপিং (Web Scraping) বলে। আরো বিস্তারিতভাবে বললে ওয়েব স্ক্র্যাপিংয়ের সংজ্ঞাটা হবেঃ “ওয়েব স্ক্র্যাপিং হলো একটি পদ্ধতি, যার মাধ্যমে ওয়েব তথা ওয়েবসাইট থেকে একটি নির্দিষ্ট প্যাটার্নের বিপুল পরিমাণ তথ্য টেকনিক্যালি আহরণ করে তা নিজস্ব কম্পিউটারে বা কোনো ডেটাবেজে (যেমন- স্প্রেডশিট) সেভ করে রাখা যায়।” আপনি যা ধারণা করেছেন, ঠিক তাই; অযথা কনফিউজ হবেন না এই ভেবে যে ওয়েব স্ক্র্যাপিং সম্বন্ধে আপনার ধারণা সঠিক নয়। সহজ কনসেপ্ট। তাহলে চলুন এবার দেখে নিই কীভাবে পাইথন তথা বিউটিফুল সোপ দিয়ে ওয়েব স্ক্র্যাপিং করা যায়।

ইন্সটলেশন

বিউটিফুল সোপের সাথে Requests মডিউলটাও ইন্সটল করা আবশ্যক, কারণ আমরা যে ওয়েবপেজটা স্ক্র্যাপ করতে চাচ্ছি আগে সেটা আমাদের পেতে হবে তো। আর তার জন্য HTTP রিকুয়েস্ট পাঠাতে হবে। সেই কাজটা করে Requests.
pip install beautifulsoup4
pip install requests

স্টার্ট স্ক্র্যাপিং

http://quotes.toscrape.com/ থেকে Quote-গুলো স্ক্র্যাপ করা যাক!

ওয়েবপেজটাতে রিকুয়েস্ট পাঠায়ঃ

>>> import requests
>>>
>>> result = requests.get("http://quotes.toscrape.com/")

আমরা আসলেই সঠিক ফলাফল পেয়েছি কিনা দেখা যাক।

>>> result.status_code
200
>>> result.headers
...

স্ট্যাটাস কোড 200, তার মানে সব ঠিকঠাক আছে।

একটি ছোট নামের ভ্যারিয়েবলে ওয়েবপেজের কনটেন্টটা স্টোর করি-

>>> c = result.content

এখনই আসল মজা শুরু। আমরা ওয়েবপেজের Quote-গুলো স্ক্র্যাপ করতে চাই; তাই আমাদের দেখতে হবে সবগুলো কোট বা উক্তির মাঝে কোন জিনিসটা কমন আছে। আমরা ওয়েবপেজটাকে Developer's Tools দ্বারা ইনস্পেক্ট করলেই দেখব যে প্রতিটি Quote বক্সগুলো div দিয়ে তৈরি এবং এগুলোর class অ্যাট্রিবিউট এক: 'quote'. তাই আমরা এই জিনিসটা ব্যবহার করেই পেজে উপস্থিত সবগুলো কোটের একয়াট লিস্ট পেয়ে যেতে পারি। তাহলে একটুক্ষণ কোডারপুলাগিরি করি।

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(c)
>>> quotes = soup.find_all("div", "quote")

এখন প্রতিটি Quote প্রিন্ট করি।

>>> for i in quotes:
     the_quote = i.span
     print(the_quote.text)

প্রতিটি Quote বক্সের উক্তিগুলো এর চিলড্রেন এলেমেন্টগুলোর প্রথমটিতে রয়েছে। তাই আমরা quotes লিস্টটির উপর একটি ফর লুপ চালিয়ে প্রতিটি Quote বক্সের প্রথম span এলেমেন্টটি একটি ভ্যারিয়েবলে রেখেছি। তারপর সেটার ভেতরে থাকা মূল্যবান উক্তিখানি .text প্রোপার্টির মাধ্যমে (একটি নিখাদ স্ট্রিং) বের করে এনে প্রিন্ট করেছি।

সম্পূর্ণ কোডটি পাবে এখানে—

তো এই হলো বিউটিফুল সোপের বিউটিফুল কারিশমা!

# বাংলায় ওয়েব স্ক্র‍্যাপিং
# পাইথনে ওয়েব স্ক্র‍্যাপিং
# BeautifulSoup4 টিউটোরিয়াল বাংলা
# beautifulsoup tutorial bangla

Post a Comment

Previous Post Next Post