rvest এবং httr Package এর ব্যবহার in R
rvest এবং httr হল R-এ ওয়েব স্ক্র্যাপিং (web scraping) এবং API কল (API calls) করার জন্য ব্যবহৃত জনপ্রিয় প্যাকেজ। ওয়েব স্ক্র্যাপিং হল এমন একটি প্রক্রিয়া যার মাধ্যমে আপনি ওয়েবসাইট থেকে ডেটা সংগ্রহ করেন, আর API কল দিয়ে আপনি একটি সার্ভারের সাথে যোগাযোগ করে ডেটা নিয়ে আসেন।
1. rvest Package for Web Scraping
rvest প্যাকেজটি ওয়েব স্ক্র্যাপিংয়ের জন্য অত্যন্ত জনপ্রিয় এবং এটি xml2 প্যাকেজের উপর ভিত্তি করে কাজ করে। এটি সহজেই HTML বা XML ডকুমেন্ট থেকে ডেটা এক্সট্রাক্ট করতে সাহায্য করে।
Installing and Loading rvest Package:
# rvest প্যাকেজ ইনস্টল করা
install.packages("rvest")
# rvest প্যাকেজ লোড করা
library(rvest)Basic Workflow of Web Scraping using rvest:
- Read HTML page: প্রথমে ওয়েব পেজের HTML ডকুমেন্ট রিড করতে হয়।
- Extract elements: তারপর পেজের বিভিন্ন HTML উপাদান যেমন ট্যাগ, ক্লাস, আইডি ইত্যাদি এক্সট্রাক্ট করতে হয়।
- Clean the Data: এক্সট্রাক্ট করা ডেটা প্রক্রিয়া করা হয় এবং উপযুক্ত ফরম্যাটে রাখা হয়।
Example: Scraping Data from a Webpage
# URL যেখানে থেকে ডেটা স্ক্র্যাপ করা হবে
url <- "https://example.com" # এখানে আপনার ওয়েবসাইট URL দিন
# ওয়েবপেজ রিড করা
webpage <- read_html(url)
# একটি নির্দিষ্ট উপাদান (যেমন, টাইটেল বা হেডলাইন) এক্সট্রাক্ট করা
title <- html_node(webpage, "h1") %>% html_text()
# ডেটা দেখানো
print(title)এখানে:
read_html(url)ফাংশনটি ওয়েবপেজের HTML ডকুমেন্ট রিড করে।html_node(webpage, "h1")ফাংশনটি<h1>ট্যাগটি সিলেক্ট করে এবংhtml_text()এর মাধ্যমে তার টেক্সট এক্সট্রাক্ট করা হয়।
Extracting Multiple Elements:
# একাধিক উপাদান এক্সট্রাক্ট করা (যেমন, সমস্ত লিংক)
links <- html_nodes(webpage, "a") %>% html_attr("href")
# লিংকগুলো দেখানো
print(links)এখানে, html_nodes() ফাংশনটি ওয়েবপেজের সমস্ত <a> ট্যাগ সিলেক্ট করে এবং html_attr("href") এর মাধ্যমে লিংক (URL) এক্সট্রাক্ট করা হয়।
Handling Pagination:
অনেক ওয়েবসাইটে পেজিনেশন থাকে, যেখানে ডেটা একাধিক পৃষ্ঠায় বিভক্ত থাকে। এর জন্য rvest প্যাকেজে ওয়েবপেজগুলোর লিংক বের করে একাধিক পেজে স্ক্র্যাপিং করা যেতে পারে।
# পেজ ২ এর লিংক
next_page <- html_node(webpage, ".next") %>% html_attr("href")
next_page_url <- paste0("https://example.com", next_page)
# নতুন পেজটি এক্সট্রাক্ট করা
next_page_data <- read_html(next_page_url)2. httr Package for API Calls
httr প্যাকেজটি API এর মাধ্যমে ডেটা সংগ্রহ করার জন্য ব্যবহৃত হয়। এটি HTTP রিকোয়েস্ট তৈরি এবং সার্ভার থেকে রেসপন্স গ্রহণ করতে সাহায্য করে। এর মাধ্যমে আপনি GET, POST, PUT, DELETE ইত্যাদি HTTP মেথড ব্যবহার করে API কল করতে পারবেন।
Installing and Loading httr Package:
# httr প্যাকেজ ইনস্টল করা
install.packages("httr")
# httr প্যাকেজ লোড করা
library(httr)Basic Workflow of Making API Calls using httr:
- Send HTTP request: API কল করার জন্য HTTP রিকোয়েস্ট পাঠানো হয়।
- Parse the Response: সার্ভার থেকে পাওয়া রেসপন্সকে প্রক্রিয়া করা হয়।
- Extract the Data: JSON বা XML রেসপন্স থেকে প্রয়োজনীয় ডেটা এক্সট্রাক্ট করা হয়।
Example: GET Request with httr
# API URL
api_url <- "https://api.exchangerate-api.com/v4/latest/USD"
# GET রিকোয়েস্ট পাঠানো
response <- GET(api_url)
# রেসপন্স দেখানো
print(response)
# JSON ডেটা পার্স করা
data <- content(response, "parsed")
print(data)এখানে:
GET()ফাংশনটি GET রিকোয়েস্ট পাঠানোর জন্য ব্যবহৃত হয়।content(response, "parsed")ফাংশনটি API রেসপন্সের JSON ডেটা পার্স করে।
Example: POST Request with httr
POST রিকোয়েস্ট ব্যবহৃত হয় যখন ডেটা সার্ভারে পাঠাতে হয় (যেমন, ফর্ম সাবমিট করা)।
# API URL
api_url <- "https://jsonplaceholder.typicode.com/posts"
# POST রিকোয়েস্ট পাঠানো (JSON ডেটা)
response <- POST(api_url, body = list(title = "foo", body = "bar", userId = 1), encode = "json")
# রেসপন্স দেখা
print(response)
# JSON রেসপন্স পার্স করা
response_data <- content(response, "parsed")
print(response_data)এখানে:
POST()ফাংশনটি POST রিকোয়েস্ট পাঠায়।encode = "json"ব্যবহার করে JSON ডেটা পাঠানো হয়।
Handling API Authentication:
অনেক API নিরাপত্তার জন্য API keys অথবা OAuth ব্যবহার করে, যার মাধ্যমে আপনার রিকোয়েস্ট প্রমাণীকৃত হয়।
# API key দিয়ে GET রিকোয়েস্ট পাঠানো
api_key <- "your_api_key"
response <- GET("https://api.example.com/data", add_headers(Authorization = paste("Bearer", api_key)))
# রেসপন্স পার্স করা
data <- content(response, "parsed")
print(data)এখানে, add_headers() ফাংশনটি হেডারে API key যোগ করতে ব্যবহৃত হয়েছে।
rvest vs httr
| Feature | rvest | httr |
|---|---|---|
| Usage | Mainly used for web scraping (HTML parsing) | Mainly used for interacting with APIs |
| Data Handling | Extracts data from HTML or XML documents | Handles HTTP requests and parses JSON/XML |
| Functions | read_html(), html_node(), html_nodes() | GET(), POST(), content(), add_headers() |
| Primary Focus | Extract data from websites | Send and receive HTTP requests |
Conclusion
- rvest: ওয়েব স্ক্র্যাপিংয়ের জন্য ব্যবহৃত হয় এবং HTML বা XML থেকে ডেটা এক্সট্রাক্ট করতে সহায়ক।
- httr: API কল করার জন্য ব্যবহৃত হয় এবং GET, POST ইত্যাদি HTTP মেথডের মাধ্যমে ডেটা সার্ভার থেকে সংগ্রহ করা হয়।
এই দুটি প্যাকেজ R-এ ওয়েব ডেটা এক্সট্রাকশন এবং API থেকে ডেটা সংগ্রহের জন্য অত্যন্ত কার্যকরী।
Read more