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

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

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

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

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

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

যাইহোক, আপনি যদি ডেবিয়ান বা লিনাক্সে থাকেন তবে উপরের কমান্ডটি এখনও কাজ করে তবে আপনি এটি প্যাকেজ ম্যানেজারের সাথে অ্যাপটি গেট ইনস্টল পাইথন 3-বিএস 4 চালিয়ে ইনস্টল করতে পারেন।

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

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

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

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

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

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

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

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

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

এর পরে, প্রয়োজনীয় গ্রন্থাগারগুলি আমদানি করুন:

 from bs4 import BeautifulSoup
import requests

প্রথমে, আসুন দেখুন কীভাবে অনুরোধ পাঠাগারটি কাজ করে:

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

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

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

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

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

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

উপরের কোডটি এর লিখিত সামগ্রীর সাথে একটি ওয়েবপৃষ্ঠার পুরো 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)

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

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

উদাহরণস্বরূপ, আসুন দেখুন কীভাবে আপনি কোনও ওয়েবপৃষ্ঠার এইচ 2 ট্যাগগুলিতে সামগ্রী পেতে পারেন।

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

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

 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)

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

 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 ট্যাগটি আপনার পছন্দ মতো প্রতিস্থাপন করতে হবে।

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

 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)

আইডি এবং ক্লাসের নাম ব্যবহার করে কীভাবে কোনও ওয়েবপৃষ্ঠা স্ক্র্যাপ করবেন

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

আপনি আইডি এবং ক্লাস স্ক্র্যাপারগুলির জন্য অনুসন্ধান পদ্ধতিটি ব্যবহার করতে পারেন। যে সমস্ত পুনরাবৃত্তিযোগ্য বস্তুটি ফেরত পাঠায় সেই সমস্ত ফাইন্ড_ল পদ্ধতির বিপরীতে, অনুসন্ধান পদ্ধতিটি একটি একক, অ-পুনরাবৃত্ত লক্ষ্যকে লক্ষ্য করে কাজ করে, যা এই ক্ষেত্রে আইডি । সুতরাং, আপনি এটি দিয়ে লুপ জন্য ব্যবহার করতে হবে না।

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

 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)

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

আপনি একটি ক্লাস তৈরি করতে পারেন এবং পূর্ববর্তী সমস্ত কোডগুলি এক সাথে পুনরায় ব্যবহারযোগ্য স্ক্র্যাপার তৈরি করতে একটি শ্রেণিতে কোনও ফাংশনে রেখে দিতে পারেন যা কিছু ট্যাগ এবং তাদের আইডির সামগ্রী পায়। আমরা পাঁচটি টি আর্গুমেন্ট গ্রহণ করে এমন একটি ফাংশন তৈরি করে এটি করতে পারি: একটি 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!')

আপনি সবেমাত্র তৈরি স্ক্র্যাপারটি একটি পুনরায় ব্যবহারযোগ্য মডিউল এবং আপনি এটি অন্য একটি পাইথন ফাইলে আমদানি করতে এবং ব্যবহার করতে পারেন। এর ক্লাস থেকে স্ক্র্যাপ ফাংশনটি কল করতে আপনি স্ক্র্যাপিট.স্ক্র্যাপ ('ওয়েবসাইট ইউআরএল', 'দাম_ট্যাগ', 'দাম_আইডি', 'শার্ট_ট্যাগ', 'শার্ট_আইডি') ব্যবহার করেন । আপনি যদি ইউআরএল এবং অন্যান্য পরামিতি সরবরাহ না করেন তবে অন্য বিবৃতি আপনাকে এটি করতে অনুরোধ করে।

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

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

দ্রষ্টব্য: স্ক্র্যাপার_মডিউল হল স্ক্র্যাপার ক্লাস ধারণকারী পাইথন ফাইলের নাম।

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

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

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

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