এই সুন্দর স্যুপ পাইথন টিউটোরিয়াল দিয়ে একটি ওয়েবসাইট স্ক্র্যাপ করুন

এই সুন্দর স্যুপ পাইথন টিউটোরিয়াল দিয়ে একটি ওয়েবসাইট স্ক্র্যাপ করুন

বিউটিফুল স্যুপ একটি ওপেন সোর্স পাইথন লাইব্রেরি। এটি এক্সএমএল এবং এইচটিএমএল ফাইলের বিষয়বস্তু স্ক্র্যাপ করতে নেভিগেটিং পার্সার ব্যবহার করে। বিভিন্ন বিশ্লেষণমূলক উদ্দেশ্যে আপনার ডেটা প্রয়োজন। যাইহোক, যদি আপনি পাইথন এবং ওয়েব স্ক্র্যাপিংয়ে নতুন হন তবে পাইথনের সুন্দর স্যুপ লাইব্রেরি একটি ওয়েব স্ক্র্যাপিং প্রকল্পের জন্য চেষ্টা করার যোগ্য।





পাইথনের ওপেন-সোর্স বিউটিফুল স্যুপ লাইব্রেরির মাধ্যমে, আপনি প্রক্রিয়াটির উপর সর্বোচ্চ নিয়ন্ত্রণ সহ ওয়েবপৃষ্ঠার যে কোনো অংশ বা উপাদান স্ক্র্যাপ করে ডেটা পেতে পারেন। এই নিবন্ধে, আমরা দেখব কিভাবে আপনি একটি ওয়েবসাইট স্ক্র্যাপ করার জন্য সুন্দর স্যুপ ব্যবহার করতে পারেন।





কীভাবে সুন্দর স্যুপ ইনস্টল করবেন এবং এটি দিয়ে শুরু করবেন

আমরা এগিয়ে যাওয়ার আগে, এই সুন্দর স্যুপ টিউটোরিয়াল নিবন্ধে, আমরা পাইথন 3 এবং ব্যবহার করব beautifulsoup4 , সুন্দর স্যুপের সর্বশেষ সংস্করণ। নিশ্চিত করুন যে আপনি একটি পাইথন ভার্চুয়াল পরিবেশ তৈরি করুন আপনার স্থানীয় মেশিন থেকে আপনার প্রকল্প এবং এর প্যাকেজগুলি বিচ্ছিন্ন করতে।





এক্সেলে চেকলিস্ট কিভাবে তৈরি করবেন

শুরু করার জন্য, আপনাকে অবশ্যই আপনার ভার্চুয়াল পরিবেশে সুন্দর স্যুপ লাইব্রেরি ইনস্টল করতে হবে। সুন্দর স্যুপ সমস্ত অপারেটিং সিস্টেমের জন্য পাইপি প্যাকেজ হিসাবে উপলব্ধ, তাই আপনি এটি দিয়ে এটি ইনস্টল করতে পারেন pip ইনস্টল beautifulsoup4 টার্মিনালের মাধ্যমে কমান্ড।

যাইহোক, যদি আপনি ডেবিয়ান বা লিনাক্সে থাকেন তবে উপরের কমান্ডটি এখনও কাজ করে তবে আপনি প্যাকেজ ম্যানেজারের সাথে এটি ইনস্টল করতে পারেন apt-get python3-bs4 ইনস্টল করুন



সুন্দর স্যুপ সরাসরি ইউআরএল স্ক্র্যাপ করে না। এটি শুধুমাত্র তৈরি এইচটিএমএল বা এক্সএমএল ফাইলের সাথে কাজ করে। এর মানে হল আপনি এটিতে সরাসরি একটি URL পাস করতে পারবেন না। সেই সমস্যা সমাধানের জন্য, আপনাকে বিউটিফুল স্যুপ খাওয়ানোর আগে পাইথনের অনুরোধ লাইব্রেরির সাথে টার্গেট ওয়েবসাইটের ইউআরএল পেতে হবে।

আপনার স্ক্র্যাপারের জন্য সেই লাইব্রেরিটি উপলব্ধ করতে, চালান pip ইনস্টল করার অনুরোধ টার্মিনালের মাধ্যমে কমান্ড।





এক্সএমএল পার্সার লাইব্রেরি ব্যবহার করতে, চালান pip install lxml এটি ইনস্টল করতে।

আপনি যে ওয়েবপেজটি স্ক্র্যাপ করতে চান তা পরিদর্শন করুন

আপনার পরিচিত নয় এমন কোনো ওয়েবসাইট স্ক্র্যাপ করার আগে, তার উপাদানগুলি পরিদর্শন করা একটি সর্বোত্তম অনুশীলন। আপনি আপনার ব্রাউজারকে ডেভেলপার মোডে পরিবর্তন করে এটি করতে পারেন। এটা বেশ সহজ Chrome DevTools ব্যবহার করুন আপনি যদি গুগল ক্রোম ব্যবহার করেন।





যাইহোক, এটির HTML ট্যাগ, বৈশিষ্ট্য, ক্লাস এবং আইডি সম্পর্কে আরো জানতে ওয়েবপেজ পরিদর্শন করা প্রয়োজন। এটি করা একটি ওয়েবপৃষ্ঠার মূল উপাদান এবং এর বিষয়বস্তুর ধরন প্রকাশ করে।

এটি আপনাকে সেরা কৌশলগুলি বিকাশেও সহায়তা করে যা আপনি ব্যবহার করতে পারেন একটি ওয়েবসাইট থেকে সঠিক তথ্য পেতে এবং আপনি কিভাবে এটি পেতে পারেন।

সুন্দর স্যুপ দিয়ে কীভাবে ওয়েবসাইটের ডেটা স্ক্র্যাপ করবেন

এখন আপনার কাছে সবকিছু প্রস্তুত এবং প্রস্তুত, একটি পছন্দসই কোড সম্পাদক খুলুন এবং একটি নতুন পাইথন ফাইল তৈরি করুন, এটি একটি নির্বাচিত নাম দিন। যাইহোক, আপনিও পারেন জুপিটার নোটবুকের মত ওয়েব ভিত্তিক আইডিই ব্যবহার করুন যদি আপনি কমান্ড লাইনের মাধ্যমে পাইথন চালানোর সাথে পরিচিত না হন।

পরবর্তী, প্রয়োজনীয় লাইব্রেরি আমদানি করুন:

from bs4 import BeautifulSoup
import requests

প্রথম বন্ধ, আসুন দেখি কিভাবে অনুরোধ লাইব্রেরি কাজ করে:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
print(website)

যখন আপনি উপরের কোডটি চালান, এটি একটি 200 টি স্ট্যাটাস প্রদান করে, যা নির্দেশ করে যে আপনার অনুরোধ সফল হয়েছে। অন্যথায়, আপনি একটি 400 স্ট্যাটাস বা কিছু অন্যান্য ত্রুটি স্ট্যাটাস পাবেন যা একটি ব্যর্থ GET অনুরোধ নির্দেশ করে।

সর্বদা আপনার টার্গেট ইউআরএল দিয়ে বন্ধনীতে ওয়েবসাইটের ইউআরএল প্রতিস্থাপন করতে ভুলবেন না।

একবার আপনি এর সাথে ওয়েবসাইট পান পাওয়া অনুরোধ করুন, তারপর আপনি এটিকে সুন্দর স্যুপে প্রেরণ করুন, যা এখন আপনার নির্বাচিত বিন্যাসের উপর নির্ভর করে এর অন্তর্নির্মিত এক্সএমএল বা এইচটিএমএল পার্সার ব্যবহার করে বিষয়বস্তুকে এইচটিএমএল বা এক্সএমএল ফাইল হিসাবে পড়তে পারে।

এইচটিএমএল পার্সারের সাথে এটি কীভাবে করবেন তা দেখতে এই পরবর্তী কোড স্নিপেটটি দেখুন:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup)

উপরের কোডটি একটি ওয়েবপৃষ্ঠার সমগ্র DOM এর বিষয়বস্তু সহ ফেরত দেয়।

আপনি ব্যবহার করে DOM- এর আরও একটি সারিবদ্ধ সংস্করণ পেতে পারেন সুন্দর করা পদ্ধতি আপনি এর আউটপুট দেখতে চেষ্টা করতে পারেন:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.prettify())

আপনি একটি ওয়েবপৃষ্ঠার বিশুদ্ধ বিষয়বস্তু এর উপাদানটি লোড না করেও পেতে পারেন । টেক্সট পদ্ধতি:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.text)

ট্যাগের নাম দিয়ে কীভাবে একটি ওয়েবপৃষ্ঠার বিষয়বস্তু স্ক্র্যাপ করবেন

আপনি বিউটিফুল স্যুপ দিয়ে একটি নির্দিষ্ট ট্যাগের বিষয়বস্তু স্ক্র্যাপ করতে পারেন। এটি করার জন্য, আপনাকে আপনার সুন্দর স্যুপ স্ক্রাপার অনুরোধে লক্ষ্য ট্যাগের নাম অন্তর্ভুক্ত করতে হবে।

উদাহরণস্বরূপ, আসুন দেখি কিভাবে আপনি বিষয়বস্তুতে পেতে পারেন h2 একটি ওয়েবপেজের ট্যাগ।

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
print(soup.h2)

উপরের কোড স্নিপেটে, স্যুপ। h2 প্রথমটি ফেরত দেয় h2 ওয়েবপেজের উপাদান এবং বাকিগুলিকে উপেক্ষা করে। সব লোড করতে h2 উপাদান, আপনি ব্যবহার করতে পারেন find_all অন্তর্নির্মিত ফাংশন এবং জন্য পাইথনের লুপ:

আপনি কি ফেসবুক ছাড়া ফেসবুক মেসেঞ্জার পেতে পারেন?
from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups)

কোডের সেই ব্লক সব ফেরত দেয় h2 উপাদান এবং তাদের বিষয়বস্তু। যাইহোক, আপনি ট্যাগটি লোড না করে কন্টেন্ট পেতে পারেন । স্ট্রিং পদ্ধতি:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
h2tags = soup.find_all('h2')
for soups in h2tags:
print(soups.string)

আপনি যেকোন HTML ট্যাগের জন্য এই পদ্ধতি ব্যবহার করতে পারেন। আপনাকে যা করতে হবে তা হল প্রতিস্থাপন h2 আপনার পছন্দের একজনকে ট্যাগ করুন।

যাইহোক, আপনি ট্যাগগুলির একটি তালিকা পাস করে আরও ট্যাগগুলি স্ক্র্যাপ করতে পারেন find_all পদ্ধতি উদাহরণস্বরূপ, নীচের কোড ব্লক এর বিষয়বস্তু scrapes প্রতি , h2 , এবং শিরোনাম ট্যাগ:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
tags = soup.find_all(['a', 'h2', 'title'])
for soups in tags:
print(soups.string)

কিভাবে আইডি এবং ক্লাসের নাম ব্যবহার করে একটি ওয়েবপেজ স্ক্র্যাপ করবেন

DevTools এর সাথে একটি ওয়েবসাইট পরিদর্শন করার পরে, এটি আপনাকে আইডি এবং ক্লাসের বৈশিষ্ট্য সম্পর্কে আরও জানতে দেয় যার প্রতিটি উপাদান তার DOM- এ রয়েছে। একবার আপনার কাছে সেই তথ্যটি থাকলে, আপনি এই পদ্ধতিটি ব্যবহার করে সেই ওয়েবপৃষ্ঠাটি স্ক্র্যাপ করতে পারেন। এটি একটি দরকারী উপাদান বিষয়বস্তু ডাটাবেস থেকে লুপ আউট হয় যখন এটি দরকারী।

আপনি ব্যবহার করতে পারেন অনুসন্ধান আইডি এবং ক্লাস স্ক্র্যাপারদের জন্য পদ্ধতি। থেকে ভিন্ন find_all পদ্ধতি যা একটি পুনরাবৃত্তিযোগ্য বস্তু প্রদান করে, অনুসন্ধান পদ্ধতিটি একটি একক, পুনরাবৃত্তিযোগ্য লক্ষ্যে কাজ করে, যা হল আইডি এক্ষেত্রে. সুতরাং, আপনি ব্যবহার করার প্রয়োজন নেই জন্য এটি সঙ্গে লুপ।

আইডি ব্যবহার করে আপনি নীচের পৃষ্ঠার বিষয়বস্তু কীভাবে স্ক্র্যাপ করতে পারেন তার একটি উদাহরণ দেখুন:

from bs4 import BeautifulSoup
import requests
website = requests.get('http://somewebpages.com/')
soup = BeautifulSoup(website.content, 'html.parser')
id = soup.find(id = 'enter the target id here')
print(id.text)

একটি শ্রেণীর নামের জন্য এটি করতে, প্রতিস্থাপন করুন আইডি সঙ্গে শ্রেণী । যাইহোক, লেখা শ্রেণী সরাসরি সিনট্যাক্স বিভ্রান্তির কারণ পাইথন এটি একটি কীওয়ার্ড হিসাবে দেখে। এই ত্রুটিটি বাইপাস করার জন্য, আপনাকে ক্লাসের সামনে একটি আন্ডারস্কোর লিখতে হবে: ক্লাস_

সংক্ষেপে, আইডি ধারণকারী লাইন হয়ে যায়:

my_classes = soup.find(class_ = 'enter the target class name here')
print(my_classes.text)

যাইহোক, আপনি একটি নির্দিষ্ট ট্যাগের নাম তার সংশ্লিষ্ট আইডি বা শ্রেণীর সাথে কল করে একটি ওয়েবপৃষ্ঠাও স্ক্র্যাপ করতে পারেন:

data = soup.find_all('div', class_ = 'enter the target class name here')
print(data)

কীভাবে সুন্দর স্যুপ দিয়ে পুনর্ব্যবহারযোগ্য স্ক্র্যাপার তৈরি করবেন

আপনি একটি ক্লাস তৈরি করতে পারেন এবং পূর্ববর্তী সমস্ত কোডগুলিকে সেই ক্লাসের একটি ফাংশনে একত্রিত করে একটি পুনusব্যবহারযোগ্য স্ক্র্যাপার তৈরি করতে পারেন যা কিছু ট্যাগ এবং তাদের আইডিগুলির বিষয়বস্তু পায়। আমরা একটি ফাংশন তৈরি করে এটি করতে পারি যা পাঁচটি আর্গুমেন্ট গ্রহণ করে: একটি URL, দুটি ট্যাগের নাম এবং তাদের সংশ্লিষ্ট আইডি বা ক্লাস।

ধরুন আপনি একটি ই-কমার্স ওয়েবসাইট থেকে শার্টের দাম কমাতে চান। নীচের উদাহরণ স্ক্র্যাপার ক্লাস তাদের সংশ্লিষ্ট আইডি বা ক্লাসের সাথে মূল্য এবং শার্ট ট্যাগগুলি বের করে এবং তারপর এটিকে 'পান্ড' ডেটা ফ্রেম হিসাবে 'মূল্য' এবং শার্ট_নাম কলামের নাম হিসাবে ফেরত দেয়।

নিশ্চিত করুন যে আপনি পিপ ইনস্টল পান্ডা টার্মিনালের মাধ্যমে যদি আপনি ইতিমধ্যেই তা না করে থাকেন।

import pandas as pd
class scrapeit:
try:
def scrape(website=None, tag1=None, id1=None, tag2=None, id2=None):
if not (website and tag1 and id1 and tag2 and id2)==None:
try:
page = requests.get(website)
soup = BeautifulSoup(page.content, 'html.parser')
infotag1 = soup.find_all(tag1, id1)
infotag2 = soup.find_all(tag2, id2)
priced = [prices.text for prices in infotag1]
shirt = [shirts.text for shirts in infotag2]
data = {
'Price':priced,
'Shirt_name':shirt}
info = pd.DataFrame(data, columns=['Price', 'Shirt_name'])
print(info)
except:
print('Not successful')
else:
print('Oops! Please enter a website, two tags and thier corresponding ids')
except:
print('Not successful!')

আপনি যে স্ক্র্যাপারটি তৈরি করেছেন তা একটি পুনusব্যবহারযোগ্য মডিউল এবং আপনি এটি অন্য পাইথন ফাইলে আমদানি এবং ব্যবহার করতে পারেন। কল করার জন্য স্ক্র্যাপ এর ক্লাস থেকে ফাংশন, আপনি ব্যবহার করুন scrapeit.scrape ('ওয়েবসাইট URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id') । আপনি যদি ইউআরএল এবং অন্যান্য প্যারামিটার প্রদান না করেন, তাহলে অন্য বিবৃতি আপনাকে তা করতে অনুরোধ করে।

অন্য পাইথন ফাইলে সেই স্কেপার ব্যবহার করতে, আপনি এটিকে এভাবে আমদানি করতে পারেন:

from scraper_module import scrapeit
scrapeit.scrape('URL', 'price_tag', 'price_id', 'shirt_tag', 'shirt_id')

বিঃদ্রঃ: scraper_module স্ক্র্যাপার ক্লাস ধারণকারী পাইথন ফাইলের নাম।

আপনিও চেক করতে পারেন সুন্দর স্যুপ ডকুমেন্টেশন আপনি যদি এটির সর্বোত্তম ব্যবহার করতে পারেন সে সম্পর্কে আরও গভীরভাবে ডুব দিতে চান।

সুন্দর স্যুপ একটি মূল্যবান ওয়েব স্ক্র্যাপিং টুল

বিউটিফুল স্যুপ হল একটি শক্তিশালী পাইথন স্ক্রিন স্ক্র্যাপার যা আপনাকে স্ক্র্যাপিংয়ের সময় আপনার ডেটা কীভাবে আসে তার উপর নিয়ন্ত্রণ দেয়। এটি একটি মূল্যবান ব্যবসায়িক সরঞ্জাম, কারণ এটি আপনাকে প্রতিযোগীর ওয়েব ডেটা যেমন মূল্য, বাজারের প্রবণতা এবং আরও অনেক কিছুতে অ্যাক্সেস দিতে পারে।

ছবিগুলিকে একত্রিত করার সফটওয়্যার

যদিও আমরা এই নিবন্ধে একটি ট্যাগ স্ক্র্যাপার তৈরি করেছি, তবুও আপনি এই শক্তিশালী পাইথন লাইব্রেরির সাথে আরও দরকারী স্ক্র্যাপিং সরঞ্জাম তৈরি করতে পারেন।

শেয়ার করুন শেয়ার করুন টুইট ইমেইল অনলাইনে সেরা ওয়েব স্ক্র্যাপিং টুলস

বিশ্লেষণমূলক উদ্দেশ্যে ওয়েবসাইট থেকে তথ্য সংগ্রহ করতে হবে? এই ওয়েব স্ক্র্যাপিং সরঞ্জামগুলি এটি সহজ করে তোলে।

পরবর্তী পড়ুন
সম্পর্কিত বিষয়
  • প্রোগ্রামিং
  • পাইথন
লেখক সম্পর্কে ইডিসু ওমিসোলা(94 নিবন্ধ প্রকাশিত)

আইডোউ স্মার্ট প্রযুক্তি এবং উত্পাদনশীলতা সম্পর্কে উত্সাহী। তার অবসর সময়ে, তিনি বিরক্তিকর যখন কোডিং এবং দাবা বোর্ডে স্যুইচ করে ঘুরে বেড়ান, কিন্তু তিনি রুটিন থেকে বিরতি নিতে পছন্দ করেন। মানুষকে আধুনিক প্রযুক্তির কাছাকাছি পথ দেখানোর জন্য তার আবেগ তাকে আরও লেখার জন্য অনুপ্রাণিত করে।

Idowu Omisola থেকে আরো

আমাদের নিউজলেটার সদস্যতা

প্রযুক্তি টিপস, রিভিউ, ফ্রি ইবুক এবং এক্সক্লুসিভ ডিলের জন্য আমাদের নিউজলেটারে যোগ দিন!

সাবস্ক্রাইব করতে এখানে ক্লিক করুন