Agent 1: Autonomous Web Scraper Agent
১. এই এজেন্ট কী কাজ করবে?
এই এজেন্টকে আপনি যেকোনো একটি ওয়েবসাইটের লিংক দেবেন। সে নিজে নিজে ওই লিংকে যাবে, পেজের সমস্ত ডেটা (যেমন: ইমেইল, নাম, ফোন নম্বর) খুঁজে বের করবে এবং সুন্দর করে একটি Excel ফাইলে সেভ করে দেবে।
২. কী কী টুলস এবং লাইব্রেরি লাগবে?
requests: ওয়েব পেজ থেকে ডেটা আনার জন্য।beautifulsoup4: HTML থেকে ডেটা ফিল্টার করার জন্য।pandas: ডেটাগুলো Excel ফাইলে সেভ করার জন্য।re(Regular Expression): ইমেইল এবং ফোন নম্বর খুঁজে বের করার জন্য (এটি পাইথনের সাথেই থাকে)।
৩. এ টু জেড কোড (A to Z Code)
নিচের কোডটি কপি করে agent_scraper.py নামে সেভ করুন।
import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
class AutonomousScraperAgent:
def __init__(self, url):
self.url = url
self.emails = set()
self.phones = set()
def fetch_data(self):
print(f"[Agent] {self.url} এ যাচ্ছি...")
try:
response = requests.get(self.url, timeout=10)
if response.status_code == 200:
print("[Agent] ডেটা সফলভাবে আনা হয়েছে। এক্সট্র্যাক্ট করা শুরু করছি...")
self.extract_information(response.text)
else:
print(f"[Agent] Error: {response.status_code}")
except Exception as e:
print(f"[Agent] Failed to connect. Error: {e}")
def extract_information(self, html_content):
# BeautifulSoup দিয়ে HTML পার্স করা
soup = BeautifulSoup(html_content, "html.parser")
text_content = soup.get_text(separator=" ")
# Regular Expression দিয়ে ইমেইল খোঁজা
email_pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
self.emails.update(re.findall(email_pattern, text_content))
# Regular Expression দিয়ে ফোন নম্বর খোঁজা (বাংলাদেশের ফরম্যাট অনুযায়ী ডেমো)
phone_pattern = r'(?:\+88|88)?(01[3-9]\d{8})'
self.phones.update(re.findall(phone_pattern, text_content))
def save_to_excel(self):
print("[Agent] ডেটা Excel এ সেভ করা হচ্ছে...")
# ইমেইল এবং ফোন নম্বর আলাদাভাবে সেভ করার জন্য
data = {
"Emails": list(self.emails) if self.emails else ["Not Found"],
"Phones": list(self.phones) if self.phones else ["Not Found"]
}
# Pandas এর সাহায্যে Excel তৈরি
# যেহেতু দুটি লিস্টের সাইজ সমান নাও হতে পারে, তাই আমরা আলাদা DataFrame বানাতে পারি
# অথবা সবচেয়ে বড় লিস্টের সমান করে ছোট লিস্টকে ফিলাপ করতে পারি।
# সহজ করার জন্য আমরা এখানে Dictionary কে DataFrame এ নিচ্ছি (Missing value NaN হবে)
df = pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in data.items() ]))
df.to_excel("scraped_data.xlsx", index=False)
print("[Agent] কাজ শেষ! 'scraped_data.xlsx' ফাইলটি চেক করুন।")
# এজেন্টকে কাজে লাগানো
if __name__ == "__main__":
target_url = input("কোন ওয়েবসাইট স্ক্র্যাপ করতে চান? লিংক দিন: ")
# উদাহরণ: https://books.toscrape.com/ (যদিও এখানে ইমেইল নেই, তবে অন্য সাইটে ট্রাই করতে পারেন)
agent = AutonomousScraperAgent(target_url)
agent.fetch_data()
agent.save_to_excel()
৪. কীভাবে এটি আরও অ্যাডভান্সড করবেন?
- বর্তমানে এটি শুধু একটি পেজ থেকে ডেটা নেয়। আপনি চাইলে এর ভেতরে এমন লজিক দিতে পারেন যেন সে ওয়েবসাইটের ভেতরের অন্যান্য লিংকগুলোতেও ঢুকে ডেটা কালেক্ট করে (যাকে Crawling বলে)।
- ডায়নামিক ওয়েবসাইটের জন্য
requestsএর বদলে Playwright ব্যবহার করতে পারেন।