সুচিপত্র:

একটি ESP8266/ESP32: 7 ধাপ সহ ডেটা স্ক্র্যাপ করা
একটি ESP8266/ESP32: 7 ধাপ সহ ডেটা স্ক্র্যাপ করা

ভিডিও: একটি ESP8266/ESP32: 7 ধাপ সহ ডেটা স্ক্র্যাপ করা

ভিডিও: একটি ESP8266/ESP32: 7 ধাপ সহ ডেটা স্ক্র্যাপ করা
ভিডিও: Using HT16K33 4 digit seven segment display with ESP32 2024, জুলাই
Anonim
একটি ESP8266/ESP32 দিয়ে স্ক্র্যাপিং ডেটা
একটি ESP8266/ESP32 দিয়ে স্ক্র্যাপিং ডেটা
একটি ESP8266/ESP32 দিয়ে স্ক্র্যাপিং ডেটা
একটি ESP8266/ESP32 দিয়ে স্ক্র্যাপিং ডেটা

আপনি কি কখনও আপনার Arduino প্রকল্পের জন্য তথ্য পেতে চেয়েছিলেন, কিন্তু এর জন্য কোন পাবলিক API নেই? অথবা ইনস্টাগ্রাম এপিআই এর মতো ক্ষেত্রে যেখানে এর জন্য সেটআপ প্রক্রিয়া খুব সুবিধাজনক নয়?

এই নির্দেশে আমরা আপনার ESP8266 বা ESP32 প্রকল্পগুলির জন্য একটি ওয়েবসাইট থেকে ডেটা স্ক্র্যাপ করার জন্য 2 টি ভিন্ন বিকল্প দেখতে যাচ্ছি।

ধাপ 1: ভিডিওটি দেখুন

Image
Image

আমি একটি ভিডিও তৈরি করেছি যা এই নির্দেশযোগ্য হিসাবে একই জিনিসকে কভার করে, তাই যদি আপনি আগ্রহী হন, দয়া করে এটি পরীক্ষা করে দেখুন!

পদক্ষেপ 2: আমরা শুরু করার আগে

আমরা শুরু করার আগে
আমরা শুরু করার আগে
আমরা শুরু করার আগে
আমরা শুরু করার আগে

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

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

ধাপ 3: নন পাবলিক APIs (স্পয়লার: Instructables একটি আছে!)

আমরা যে প্রথম উপায়টি দেখব তা হল একটি অ-পাবলিক API ব্যবহার করা। এটি সর্বদা পাওয়া যাবে না, তবে যদি এটি হয় তবে এটি অবশ্যই সেই পদ্ধতি যা আপনার ব্যবহার করা উচিত। আমি যাকে "নন-পাবলিক এপিআই" বলছি তা হল মূলত যেখানে একটি সাইট পর্দার পিছনে তাদের ওয়েবসাইটে একটি অননুমোদিত এপিআই ব্যবহার করে আমরা যে ডেটা পেতে চাই তা আনতে।

এটি ব্যবহার করার জন্য পছন্দের বিকল্প কেন হবে তার কয়েকটি কারণ রয়েছে।

  1. সবচেয়ে বড় সুবিধা হল যে এটি একটি ওয়েবপৃষ্ঠা হিসাবে প্রায়শই পরিবর্তিত হওয়ার সম্ভাবনা নেই, যদি আপনি সরাসরি ওয়েব পৃষ্ঠা এইচটিএমএল থেকে ডেটা স্ক্র্যাপ করেন, প্রতিবার যখন তারা সাইটে পরিবর্তন করে, আপনার বিশ্লেষণ ভেঙে যেতে পারে।
  2. এটি সাধারণত বেশি ডেটা দক্ষ। যখন আপনি একটি ওয়েবপৃষ্ঠা স্ক্র্যাপ করছেন তখন আপনি মূলত এটি থেকে তথ্য টুকরা বের করার জন্য সম্পূর্ণ HTML পৃষ্ঠাটি ডাউনলোড করছেন, API গুলি শুধুমাত্র ডেটা পয়েন্টগুলি ফেরত দিতে যাচ্ছে তাই সাধারণত অনেক ছোট অনুরোধ হবে।
  3. এটি সাধারণত বিশ্লেষণ করা সহজ। সাধারণত API গুলি JSON ফর্ম্যাটে ডেটা ফেরত দেয় যা বিশ্লেষণ করার জন্য সোজা, এটি বিশেষভাবে সত্য যদি আপনি একাধিক টুকরা ডেটা বের করেন।

আমাদের প্রথমে খুঁজে বের করতে হবে যে ওয়েবপৃষ্ঠা এইরকম একটি সেটআপ ব্যবহার করে কিনা। সবচেয়ে বড় সূত্র হল যদি সাইটটি রিয়েল-টাইমে মান আপডেট করে যেমন এটি কিকস্টার্টার-এ করে, কিন্তু তা না থাকলেও আশা করা যায় যে এটি এই সেটআপটি ব্যবহার করতে পারে। ইন্সট্রাকটেবল তাদের সাইটের জন্য কিছু ডেটা আনার জন্য একটি অ-পাবলিক API ব্যবহার করে যদিও এটি রিয়েল টাইমে রিফ্রেশ হয় না।

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

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

আপনি সাধারণত "json" টাইপযুক্তদের সন্ধান করতে চান। এখানে প্রচুর অনুরোধ করা যেতে পারে, তাই এটি টাইপ অনুসারে বাছাই করতে সাহায্য করতে পারে। কিকস্টার্টার ক্যাম্পেইন পৃষ্ঠায় আপনি দেখতে পাচ্ছেন যে এটি এই সেটআপটি ব্যবহার করছে কারণ আপনি দেখতে পাচ্ছেন যে "stats.json" এন্ডপয়েন্টে ক্রমাগত অনুরোধ করা হচ্ছে। Instructables লেখক পৃষ্ঠায় (যেমন আমার হল "https://www.instructables.com/member/witnessmenow/"), তারা ক্রমাগত অনুরোধ করে না, কিন্তু আপনি অন্যদের মধ্যে "showAuthorStats" এন্ডপয়েন্টের অনুরোধ লুকিয়ে দেখতে পারেন।

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

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

JSON ডেটা বিশ্লেষণের জন্য আমি বেশিরভাগ পরিস্থিতিতে ArudinoJSON ব্যবহার করার সুপারিশ করব, যদি এটি এমন কিছু হয় যা আপনি একটি নির্দেশযোগ্য করতে চান, শুধু আমাকে জানান!

ধাপ 4: সরাসরি ডেটা স্ক্র্যাপ করা

সরাসরি ডেটা স্ক্র্যাপ করা
সরাসরি ডেটা স্ক্র্যাপ করা
সরাসরি ডেটা স্ক্র্যাপ করা
সরাসরি ডেটা স্ক্র্যাপ করা
সরাসরি ডেটা স্ক্র্যাপ করা
সরাসরি ডেটা স্ক্র্যাপ করা

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

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

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

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

যদি আমরা টিমট্রিসের উদাহরণের দিকে নজর দিই, যেমন আগে আমরা প্রতিক্রিয়া শিরোনামগুলি এড়িয়ে গিয়েছিলাম এবং এখন প্রতিক্রিয়াটির দেহের দিকে তাকিয়ে আছি (যা ওয়েবপৃষ্ঠা)। ক্লায়েন্ট থেকে যা ফিরে আসে তা হ'ল ডেটার একটি প্রবাহ। আমরা আমাদের অনুসন্ধানের প্রশ্ন পর্যন্ত কোন কিছুকে গুরুত্ব দিই না, তাই আমরা একটি client.find করি। যদি এটি অনুসন্ধান ক্যোয়ারী খুঁজে পায় তবে এটি সত্য হবে এবং এটি স্ট্রিমটিকে প্রশ্নের শেষের দিকে নিয়ে যাবে। স্ট্রিম থেকে পরের জিনিসটি আমরা খুঁজছি এমন ডেটা হবে, কিন্তু এই ক্ষেত্রে আমরা নিশ্চিত নই যে ডেটা কতদিন থাকবে, কিন্তু আমরা জানি যে এটি স্ট্রিমে আমাদের বর্তমান স্থান এবং পরবর্তী উল্টানো কমা এর মধ্যে সমস্ত তথ্য । আমরা "client.readBytesUntil" ব্যবহার করে এটি অর্জন করতে পারি যা এটি যা বলে তা করে, এটি নির্দিষ্ট ক্যোয়ারীকে আঘাত না করা পর্যন্ত এটি একটি বাফারে পাঠ করে। শুধু নিশ্চিত করুন যে আপনি যে বাফারটি পড়ছেন তা সমস্ত ডেটা ধরে রাখার জন্য যথেষ্ট বড়, আমি মনে করি আমরা 32 এর সাথে এখানে বেশ নিরাপদ!

আপনার যদি প্রয়োজনীয় সমস্ত ডেটা থাকে তবে আপনার আর ডেটা পড়ার দরকার নেই। আমি এখানে সংযোগ বন্ধ করিনি কারণ এটি ESP8266 এ সমস্যা সৃষ্টি করবে বলে মনে হচ্ছে না, এটি ESP32 এর সাথে সমস্যা সৃষ্টি করবে বলে মনে হচ্ছে, তাই আমি একটি client.stop () যোগ করেছি। সম্পূর্ণ সৎ হওয়ার জন্য, আমি নিশ্চিত নই যে আমি কেন এটিকে পদ্ধতির শীর্ষে রেখেছি, আমি মনে করি আপনার কাছে আপনার প্রয়োজনীয় ডেটা থাকলে এটি বন্ধ করার আরও অর্থ হবে।

ধাপ 5: বাহ্যিক সার্ভার ব্যবহার করে ডেটা স্ক্র্যাপ করা:

বাহ্যিক সার্ভার ব্যবহার করে ডেটা স্ক্র্যাপ করা
বাহ্যিক সার্ভার ব্যবহার করে ডেটা স্ক্র্যাপ করা
বাহ্যিক সার্ভার ব্যবহার করে ডেটা স্ক্র্যাপ করা
বাহ্যিক সার্ভার ব্যবহার করে ডেটা স্ক্র্যাপ করা

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

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

ধাপ 6: ব্যবহারের সীমা

ব্যবহারের সীমা
ব্যবহারের সীমা

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

ধাপ 7: পড়ার জন্য ধন্যবাদ

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

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

পড়ার জন্য ধন্যবাদ!

প্রস্তাবিত: