# ওয়েব স্ক্র্যাপিং এপিআই সার্ভিস

ওয়েব স্ক্র্যাপিং একটা চ্যালেন্জিং কাজ। আমরা চাইলেই আমাদের যেই ডাটা দরকার সেটা কার্ল, এক্সিওস এগুলো দিয়ে নিতে পারি, এবং নিজেরা ডাটাগুলো প্রসেস করতে পারি। কিন্তু মাঝে মাঝে বড়সড় সাইজের ওয়েবসাইটের ডাটা প্রসেস করার জন্য কার্ল যথেষ্ট হয়না।

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

আপনার কি বড় কোন ইকমার্স বা নিউজ সাইটের ডাটা কালেক্ট করতে কখনো সমস্যা হয়েছে? চিন্তায় পড়ে গিয়েছেন কিভাবে এত মিলিয়ন বিলিয়ন পেইজের উপর দিয়ে যাবেন?

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

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

## [ScraperAPI দিয়ে স্ক্র্যাপিং](https://cutt.ly/vjz4nF6)

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

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

```
mkdir scraper && cd scraper  
npm init -y  
npm install axios
```

তো, ধরেন আমরা example.com ওয়েবসাইটটা স্ক্র্যাপ করবো। এটা খুব ছোট একটা ওয়েবসাইট, ভিতরে তেমন কিছুই নাই।

```js
const axios = require('axios').default;async function scrape() {  
  const response = await axios  
    .get('<[http://api.scraperapi.com](http://api.scraperapi.com/)\>', {  
      params: {  
        api\_key: "API\_KEY",  
        url: "<[http://example.com](http://example.com/)\>"  
      }  
    });  
  console.log(response.data);  
}

scrape();
```

আপনাকে API\_KEY টা চেন্জ করে আপনার এপিআই টোকেন বসাতে হবে। টোকেনটা আপনি ড্যাশবোর্ড হতে পাবেন।

কোডটা রান করলে কনসোলেই একটা রেসপন্স পাবেন। যেটা ওই সাইটের একটা নরমাল এইচটিএমটল কোড। এটা নিয়ে এবার আপনি যা খুশি করেন।

```html
<!-- ➜  node index.js   -->
<!doctype html>  
<html>  
<head>  
    <title>Example Domain</title>  
  
    <meta charset="utf-8" />  
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />  
    <meta name="viewport" content="width=device-width, initial-scale=1" />  
    <style type="text/css">  
    body {  
        background-color: #f0f0f2;  
        margin: 0;  
        padding: 0;  
        font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;  
          
    }  
<!--...-->
```

যদি আপনি একটা ডায়নামিক আর মডার্ন ওয়েবসাইট হতে ডাটা কালেক্ট করতে চান তবে কি হবে? রিএক্ট, এঙ্গুলার, ভিউ দিয়ে তৈরি একটা সাইট, কিংবা এমন কোন পেইজ যেখানে ডাটা এজাক্সের মাধ্যমে লোড হয়?

তাহলে আপনাকে প্যারামিটারে render: true কথাটা লাগাতে হবে।

```js
const axios = require('axios').default;async function scrape() {  
  const response = await axios  
    .get('<[http://api.scraperapi.com](http://api.scraperapi.com/)\>', {  
      params: {  
        api\_key: "API\_KEY",  
        url: "<[https://duckduckgo.com/?q=test&t=h\_&ia=web](https://duckduckgo.com/?q=test&t=h_&ia=web)\>",  
        render: true  
      }  
    });  
  console.log(response.data);  
}

scrape();
```

এতে সে শুধু সোর্স কোড নিবে না, আসলে একটা ছোট ব্রাউজার চালু করে, পেইজ লোড করে, সব ফিক্স করে, রেন্ডার করা পেইজটার কোড আপনাকে পাঠাবে।

ক্যাপচা সলভ করা,স্কেলিং করা ইত্যাদি মাথায় রেখে এই ছোট কাজটা ক্রোমিয়াম বা পাপেটার দিয়ে করলে হয়তো আপনার ঘন্টা, দিন, মাস পার হয়ে যাবে।

এত এত লিংক কোথায় পাবেন, কিংবা সোর্স কোড দিয়েই বা কি করবেন, সেটা অন্যদিন আলোচনা করবো।

# বিভিন্ন স্ক্র্যাপিং এপিআই সার্ভিসের তুলনা

যদিও স্ক্র্যাপার এপিআই খুবই ভালো, আমরা ত চাইবোই বাজারে থাকা অন্যান্য প্রভাইডারের সাথে এটাকে তুলনা করার জন্য। হয়তো কোনটার ডেভেলপার সাপোর্ট খুব ভালো, হয়তো কাস্টমার সাপোর্ট ভালো।

তো এটা টেস্ট করার জন্য আমরা কয়েকটা ওয়েবসাইট ব্যবহার করবো। আমাদের টার্গেট হবে ওয়েবসাইটটা লোড হয় কিনা সেটা দেখা। কারণ এগুলোর প্রতিটাই অনেক প্রটেক্টেড সাইট।

- Example.com — এটা দিয়ে আমরা প্রাথমিক ল্যাটেন্সি দেখবো। সাধারণত এই প্রক্সি এপিআই সার্ভিসগুলো দিয়ে এই সাইটটা সেকেন্ডের মধ্যে লোড হতে হবে।
- Datadome — এই সাইটটা বট প্রটেকশন সার্ভিসের মাধ্যমে প্রটেক্ট করা। তাদের বট প্রটেকশন সার্ভিসের মাসিক দাম ৫-১০ হাজার ডলার, বা আরো বেশি।
- Booking — এই সাইটটা পেরিমিটারএক্স নামে একটা সার্ভিসের মাধ্যমে প্রটেক্ট করা। মানুষ এখান হতে অনেক সময় বিমান বা হোটেলের জন্য প্রাইস কালেক্ট করে।
- Sephora — এই সাইটটা ক্লাউডফ্লেয়ার দিয়ে প্রটেক্ট করা। বাংলাদেশ হতে নরমালি এই সাইট লোডও হয় না। আর নরমাল প্রক্সি ব্যবহার করলেও সাইট লোড হয়না।
- FastPeopleSearch — এই সাইটটা অনেক অনেক সার্ভিসের মাধ্যমে প্রটেক্ট করা। এখানে অনেক মানুষের ব্যক্তিগত ও বিজনেস রিলেটেড ডাটা পাওয়া যায়। খুব ভালো প্রক্সি ব্যবহার করলেও এই সাইট লোড করা খুব কঠিন।

## [ScraperAPI](https://cutt.ly/vjz4nF6)

এটা অনেক পুরাতন একটা ওয়েব স্ক্র্যাপিং এপিআই সার্ভিস। তাদের কাস্টমার সাপোর্ট একদম অসাধারণ, আর তারা বিশাল বিশাল লোড সামাল দিতে পারে। নরমাল কাজে আমি সাধারণত তাদের সার্ভিস ব্যবহার করি।

প্রাইসিংঃ

- ৫০০০ ফ্রি ক্রেডিট।
- ২৫০,০০০ ক্রেডিট মাসে ২৯ ডলার। একসাথে ১০ টা লিংক স্ক্র্যাপ করা যায়।
- ৩০ লাখ ক্রেডিট মাসে ২৪৯ ডলার। একসাথে ৫০ টা লিংক স্ক্র্যাপ করা যায়।
- আরো বড় কিছু খুঁজলে হাজার ডলার গুনলে, তারা আপনাকে এন্টারপ্রাইজ লেভেলে সাপোর্ট দিবে।

ফিচারগুলোঃ

- জাভাস্ক্রিপ্ট রেন্ডারিং
- অটোমেটিক প্রক্সি রোটেশন
- রেসিডেনশিয়াল প্রক্সি
- জিওটার্গেটিং
- কাস্টম সেশন

টেস্টের রেজাল্টঃ

- ✔️ Example
- ✔️ Datadome
- ✔️ Booking
- ✔️ Sephora
- ✔️ FastPeopleSearch

## [ScrapingBee](https://cutt.ly/ljz4miH)

এটা শুধু ওয়েবসাইট লোড করবে তা না। লোড করার পর বিভিন্ন কোড রান করতে দিবে, একটা এলিমেন্টের জন্য অপেক্ষা করতে দিবে। গুগল সার্চের জন্যও তাদের আলাদা সাপোর্ট আছে।

প্রাইসিংঃ

- ১০০০ ফ্রি ক্রেডিট।
- ১০ লাখ ক্রেডিট মাসে ৯৯ ডলার। একসাথে ১০ টা লিংক স্ক্র্যাপ করা যায়।
- ২৫ লাখ ক্রেডিট মাসে ২৪৯ ডলার। একসাথে ৪০ টা লিংক স্ক্র্যাপ করা যায়।
- আরো বড় কিছু খুঁজলে হাজার ডলার গুনলে, তারা আপনাকে এন্টারপ্রাইজ লেভেলে সাপোর্ট দিবে।

ফিচারগুলোঃ

- জাভাস্ক্রিপ্ট রেন্ডারিং
- অটোমেটিক প্রক্সি রোটেশন
- রেসিডেনশিয়াল প্রক্সি
- জিওটার্গেটিং
- স্ক্রিনশট, এক্সটাক্টশন রুলস, গুগল সার্চ এপিআই

টেস্টের রেজাল্টঃ

- ✔️ Example
- ✔️ Datadome
- ✔️ Booking
- ✔️ Sephora
- ❌ FastPeopleSearch

## [ProxyCrawl](https://cutt.ly/tjz4jfr)

এটা অনেক বড় একটা সার্ভিস প্রভাইডার। স্ক্র্যাপিং তাদের অনেকগুলোর মধ্যে একটা সার্ভিস। তাদের লিড জেনারেশন, স্ক্রিনশট, ক্রলিং, সহ অনেক কাজের এপিআই আছে।

প্রাইসিংঃ

- ১০০০ ফ্রি ক্রেডিট।
- ৫০,০০০ ক্রেডিট মাসে ২৯ ডলার। একসাথে ১০ টা লিংক স্ক্র্যাপ করা যায়।
- ১০ লাখ ক্রেডিট মাসে ১৪৯ ডলার। একসাথে ৩০ টা লিংক স্ক্র্যাপ করা যায়।

ফিচারগুলোঃ

- জাভাস্ক্রিপ্ট রেন্ডারিং
- অটোমেটিক প্রক্সি রোটেশন
- রেসিডেনশিয়াল প্রক্সি
- জিওটার্গেটিং
- কাস্টম সেশন

টেস্টের রেজাল্টঃ

- ✔️ Example
- ✔️ Datadome
- ✔️ Booking
- ✔️ Sephora
- ❌ FastPeopleSearch

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