রুবিল্যান্ডের দুটি রত্ন রয়েছে যা গত কয়েক বছর ধরে ওয়েব স্ক্র্যাপিং স্পটলাইট দখল করে আছে:নোকোগিরি এবং মেকানাইজ। আমরা একটি বাস্তব উদাহরণ দিয়ে কাজ করার আগে এই প্রতিটির উপর একটি নিবন্ধ ব্যয়.
বিষয়
- ওয়েব স্ক্র্যাপিং?
- অনুমতি
- সমস্যা
- নোকোগিরি
- এক্সট্রাকশন?
- পৃষ্ঠাগুলি
- API
- নোড নেভিগেশন
ওয়েব স্ক্র্যাপিং?
ওয়েব বা স্ক্রিন স্ক্র্যাপিংয়ের চেয়ে চারপাশে অভিনব পদ রয়েছে। ওয়েব হার্ভেস্টিং এবং ওয়েব ডেটা এক্সট্র্যাকশন আপনাকে এখনই বলে দেয় কী ঘটছে। আমরা ওয়েব পৃষ্ঠাগুলি থেকে ডেটা নিষ্কাশন স্বয়ংক্রিয়ভাবে করতে পারি-এবং এটি তেমন জটিলও নয়।
একটি উপায়ে, এই সরঞ্জামগুলি আপনাকে মানব ওয়েব ব্রাউজিংকে অনুকরণ এবং স্বয়ংক্রিয় করার অনুমতি দেয়। আপনি একটি প্রোগ্রাম লিখুন যা শুধুমাত্র আপনার আগ্রহের তথ্য বাছাই করে। নির্দিষ্ট ডেটা টার্গেট করা প্রায় সিএসএস নির্বাচকদের ব্যবহার করার মতোই সহজ।
কয়েক বছর আগে আমি এমন কিছু অনলাইন ভিডিও কোর্সে সাবস্ক্রাইব করেছিলাম যেখানে এক মিলিয়ন ছোট ভিডিও লাইক ছিল কিন্তু সেগুলিকে বাল্ক ডাউনলোড করার কোনো বিকল্প নেই। আমাকে প্রতিটি লিঙ্কের মধ্য দিয়ে যেতে হয়েছিল এবং ভয়ঙ্কর ‘সেভ অ্যাজ’ করতে হয়েছিল। এটি ছিল মানুষের ওয়েব স্ক্র্যাপিং-এর মতো কিছু যা আমাদের প্রায়শই করতে হবে যখন আমাদের কাছে এই ধরণের জিনিসগুলি স্বয়ংক্রিয় করার জ্ঞানের অভাব থাকে। কোর্সটি নিজেই ঠিক ছিল, কিন্তু আমি এর পরে তাদের পরিষেবাগুলি আর ব্যবহার করিনি। এটা ঠিক খুব ক্লান্তিকর ছিল.
আজ, আমি এই ধরনের মন-গলে যাওয়া UX সম্পর্কে খুব বেশি চিন্তা করব না। একটি স্ক্র্যাপার যা আমার জন্য ডাউনলোড করবে তা একসাথে নিক্ষেপ করতে আমার মাত্র কয়েক মিনিট সময় লাগবে। কোন বড় কথা নয়!
আমরা শুরু করার আগে আমাকে এটিকে দ্রুত ভেঙে দিতে দিন। পুরো জিনিসটি কয়েকটি ধাপে ঘনীভূত করা যেতে পারে। প্রথমে আমরা একটি ওয়েব পৃষ্ঠা নিয়ে আসি যেখানে আমাদের প্রয়োজনীয় ডেটা রয়েছে। তারপরে আমরা সেই পৃষ্ঠাটির মাধ্যমে অনুসন্ধান করি এবং আমরা যে তথ্য বের করতে চাই তা সনাক্ত করি।
চূড়ান্ত পদক্ষেপ হল এই বিটগুলিকে টার্গেট করা, প্রয়োজনে সেগুলিকে টুকরো টুকরো করা এবং আপনি কীভাবে এবং কোথায় সেগুলি সংরক্ষণ করতে চান তা নির্ধারণ করুন৷ ভাল-লিখিত HTML প্রায়শই এই প্রক্রিয়াটিকে সহজ এবং আনন্দদায়ক করার মূল চাবিকাঠি। আরও জড়িত নিষ্কাশনের জন্য, এটি একটি ব্যথা হতে পারে যদি আপনাকে খারাপ কাঠামোগত মার্কআপের সাথে মোকাবিলা করতে হয়।
APIs সম্পর্কে কি? খুব ভালো প্রশ্ন। আপনার যদি API সহ কোনও পরিষেবাতে অ্যাক্সেস থাকে তবে প্রায়শই আপনার নিজের স্ক্র্যাপার লেখার খুব কম প্রয়োজন হয়। এই পদ্ধতিটি বেশিরভাগ ওয়েবসাইটগুলির জন্য যা এই ধরণের সুবিধা প্রদান করে না। একটি API ছাড়া, এটি প্রায়ই ওয়েবসাইট থেকে তথ্য নিষ্কাশন স্বয়ংক্রিয় করার একমাত্র উপায়।
আপনি জিজ্ঞাসা করতে পারেন, এই স্ক্র্যাপিং জিনিসটি আসলে কীভাবে কাজ করে? গভীর প্রান্তে ঝাঁপ না দিয়ে, সংক্ষিপ্ত উত্তর হল, ট্রি ডেটা স্ট্রাকচার অতিক্রম করে। নোকোগিরি এই ডেটা স্ট্রাকচারগুলি তৈরি করে যে নথিগুলি আপনি এটিকে ফিড করেন এবং আপনাকে উত্তোলনের জন্য আগ্রহের বিটগুলিকে লক্ষ্য করতে দেয়৷ উদাহরণস্বরূপ, CSS হল একটি ভাষা যা ট্রি ট্রাভার্সাল, ট্রি ডাটা স্ট্রাকচার অনুসন্ধানের জন্য লিখিত এবং আমরা ডেটা নিষ্কাশনের জন্য এটি ব্যবহার করতে পারি।
খেলার জন্য অনেক পন্থা এবং সমাধান আছে। রুবিল্যান্ডের দুটি রত্ন রয়েছে যা এখন বেশ কয়েক বছর ধরে স্পটলাইট দখল করে আছে। অনেক লোক এখনও এইচটিএমএল স্ক্র্যাপিং প্রয়োজনের জন্য নোকোগিরি এবং মেকানাইজের উপর নির্ভর করে। উভয়ই পরীক্ষা করা হয়েছে এবং অত্যন্ত সক্ষম হওয়ার সাথে সাথে ব্যবহার করা সহজ বলে প্রমাণিত হয়েছে। আমরা তাদের উভয়ের দিকে নজর দেব। কিন্তু তার আগে, আমি এই সংক্ষিপ্ত পরিচায়ক সিরিজের শেষে যে সমস্যার সমাধান করতে যাচ্ছি সেটির সমাধান করতে আমি একটু সময় নিতে চাই।
অনুমতি
আপনি দূরে স্ক্র্যাপ করা শুরু করার আগে, নিশ্চিত করুন যে আপনি ডেটা নিষ্কাশনের জন্য অ্যাক্সেস করার চেষ্টা করছেন এমন সাইটগুলির অনুমতি আপনার কাছে আছে। যদি সাইটের একটি API বা RSS ফিড থাকে, উদাহরণস্বরূপ, সেই পছন্দসই সামগ্রীটি পেতে কেবল সহজ নয়, এটি পছন্দের আইনি বিকল্পও হতে পারে।
আপনি যদি তাদের সাইটে ব্যাপক স্ক্র্যাপিং করেন তবে সবাই এটির প্রশংসা করবে না - বোঝা যায় তাই। আপনি আগ্রহী সেই নির্দিষ্ট সাইটে নিজেকে শিক্ষিত করুন এবং নিজেকে সমস্যায় ফেলবেন না। আপনার গুরুতর ক্ষতি হওয়ার সম্ভাবনা কম, কিন্তু অজান্তে বিপদে পড়ার উপায় নয়।
সমস্যা
আমার একটি নতুন পডকাস্ট তৈরি করা দরকার। ডিজাইনটি আমি যেখানে চেয়েছিলাম সেখানে ছিল না এবং আমি নতুন পোস্ট প্রকাশের উপায় ঘৃণা করতাম। অভিশাপ WYSIWYGs! প্রসঙ্গ একটু. প্রায় দুই বছর আগে, আমি আমার পডকাস্টের প্রথম সংস্করণ তৈরি করেছি। ধারণাটি ছিল সিনাত্রার সাথে খেলতে এবং সুপার লাইটওয়েট কিছু তৈরি করা। আমি বেশ কিছু অপ্রত্যাশিত সমস্যার মধ্যে পড়েছিলাম যেহেতু আমি প্রায় সবকিছুই তৈরি করেছি।
রেল থেকে আসা, এটি অবশ্যই একটি শিক্ষামূলক যাত্রা ছিল যা আমি প্রশংসা করি, কিন্তু আমি দ্রুত একটি স্ট্যাটিক সাইট ব্যবহার না করার জন্য দুঃখিত যেটি আমি গিটহাবের মাধ্যমে গিটহাবের মাধ্যমে স্থাপন করতে পারতাম। নতুন এপিসোড স্থাপন এবং সেগুলি বজায় রাখার মধ্যে আমি যে সরলতার সন্ধান করছিলাম তার অভাব ছিল। কিছুক্ষণের জন্য, আমি সিদ্ধান্ত নিয়েছি যে আমার কাছে ভাজার জন্য বড় মাছ আছে এবং এর পরিবর্তে নতুন পডকাস্ট উপাদান তৈরিতে মনোনিবেশ করেছি।
এই গত গ্রীষ্মে আমি গুরুতর হতে শুরু করেছি এবং একটি মিডলম্যান সাইটে কাজ করেছি যা গিটহাব পৃষ্ঠাগুলির মাধ্যমে হোস্ট করা হয়েছে। শোটির দ্বিতীয় মরসুমের জন্য, আমি নতুন কিছু চেয়েছিলাম। একটি নতুন, সরলীকৃত ডিজাইন, নতুন পর্ব প্রকাশের জন্য মার্কডাউন, এবং হেরোকু-স্বর্গের সাথে কোন মুষ্টিযুদ্ধ নয়! ব্যাপারটা হল যে আমার কাছে 139 টি পর্ব পড়ে আছে যেগুলি মিডলম্যানের সাথে কাজ করার জন্য প্রথমে আমদানি করা এবং রূপান্তর করা দরকার।
পোস্টের জন্য, মিডলম্যান .markdown
ব্যবহার করে যে ফাইলগুলিতে ডেটার জন্য তথাকথিত ফ্রন্টম্যাটার রয়েছে—যা মূলত আমার ডাটাবেসকে প্রতিস্থাপন করে। 139টি পর্বের জন্য হাত দিয়ে এই স্থানান্তর করা একটি বিকল্প নয়। যে জন্য গণনা করা হয়. আমার পুরানো ওয়েবসাইটের এইচটিএমএল পার্স করার, প্রাসঙ্গিক বিষয়বস্তু স্ক্র্যাপ করার এবং মিডলম্যানে নতুন পডকাস্ট পর্ব প্রকাশের জন্য ব্যবহার করা ব্লগ পোস্টে এটি স্থানান্তর করার একটি উপায় বের করতে হবে।
তাই, পরবর্তী তিনটি নিবন্ধে, আমি আপনাকে এই ধরনের কাজের জন্য রুবিল্যান্ডে সাধারণত ব্যবহৃত টুলগুলির সাথে পরিচয় করিয়ে দিতে যাচ্ছি। শেষ পর্যন্ত, আমরা আপনাকে ব্যবহারিক কিছু দেখানোর জন্য আমার সমাধানটি নিয়ে যাব।
নোকোগিরি
এমনকি যদি আপনি রুবি/রেলের জন্য সম্পূর্ণ নতুন হন, তবে সম্ভাবনা খুব ভাল যে আপনি ইতিমধ্যে এই ছোট্ট মণি সম্পর্কে শুনেছেন। নামটি প্রায়শই বাদ দেওয়া হয় এবং সহজেই আপনার সাথে লেগে যায়। আমি নিশ্চিত নই যে অনেকেই জানেন যে নোকোগিরি "স" এর জন্য জাপানি।
টুলটি কী করে তা বুঝতে পারলে এটি একটি উপযুক্ত নাম। এই রত্নটির স্রষ্টা হলেন সুন্দর টেন্ডারলোভ, অ্যারন প্যাটারসন। নোকোগিরি এক্সএমএল এবং এইচটিএমএল ডকুমেন্টকে ডেটা স্ট্রাকচারে রূপান্তর করে—একটি ট্রি ডেটা স্ট্রাকচার, আরও সুনির্দিষ্ট হতে। টুলটি দ্রুত এবং একটি চমৎকার ইন্টারফেসও অফার করে। সামগ্রিকভাবে, এটি একটি খুব শক্তিশালী লাইব্রেরি যা আপনার এইচটিএমএল স্ক্র্যাপিং প্রয়োজনীয়তার অনেকগুলি যত্ন নেয়।
আপনি Nokogiri ব্যবহার করতে পারেন শুধুমাত্র HTML পার্স করার জন্য নয়; এক্সএমএলও ন্যায্য খেলা। আপনার লোড করা নথিগুলিকে অতিক্রম করতে এটি আপনাকে XML পাথ ভাষা এবং CSS ইন্টারফেস উভয়ের বিকল্প দেয়। XML পাথ ভাষা, বা সংক্ষেপে XPath হল একটি কোয়েরি ভাষা।
এটি আমাদের XML নথি থেকে নোড নির্বাচন করার অনুমতি দেয়। সিএসএস নির্বাচকরা সম্ভবত নতুনদের কাছে বেশি পরিচিত। আপনার লেখা শৈলীগুলির মতো, CSS নির্বাচকরা নিষ্কাশনের জন্য আগ্রহী এমন পৃষ্ঠাগুলির নির্দিষ্ট বিভাগগুলিকে লক্ষ্য করা চমত্কারভাবে সহজ করে তোলে। আপনি যখন একটি নির্দিষ্ট গন্তব্যকে লক্ষ্য করবেন তখন আপনাকে নোকোগিরিকে জানাতে হবে যে আপনি কী করছেন।
পৃষ্ঠা
আমাদের সর্বদা যেটি দিয়ে শুরু করতে হবে তা হল আমাদের আগ্রহী প্রকৃত পৃষ্ঠাটি আনা। আমরা কোন ধরনের নোকোগিরি ডকুমেন্ট পার্স করতে চাই তা উল্লেখ করি—যেমন XML বা HTML:
নোকোগিরি::XMLNokogiri::HTML
some_scraper.rb
"nokogiri"require "open-uri" page =Nokogiri::XML(File.open("some.xml"))পৃষ্ঠা =Nokogiri::HTML(File.open("some.html"))প্রে>
Nokogiri:XML
এবংNokogiri:HTML
IO অবজেক্ট বা স্ট্রিং অবজেক্ট নিতে পারে। উপরে যা ঘটে তা সোজা। এটিopen-uri
ব্যবহার করে মনোনীত পৃষ্ঠাটি খোলে এবং আনে এবং তারপরে এর গঠন, এর XML বা HTML একটি নতুন নোকোগিরি নথিতে লোড করে। XML এমন কিছু নয় যা নতুনদের প্রায়ই মোকাবেলা করতে হয়।অতএব, আমি সুপারিশ করব যে আমরা আপাতত HTML পার্সিংয়ের উপর ফোকাস করি। কেন
open-uri
? রুবি স্ট্যান্ডার্ড লাইব্রেরির এই মডিউলটি আমাদের খুব বেশি ঝামেলা ছাড়াই সাইটটি দখল করতে দেয়। যেহেতু IO অবজেক্টগুলি ন্যায্য খেলা, আমরাopen-uri
এর সহজ ব্যবহার করতে পারি .
API
আসুন একটি ছোট উদাহরণ দিয়ে এটিকে অনুশীলনে রাখি:
at_css
some_podcast_scraper.rb
require 'nokogiri'require "open-uri"url ='https://betweenscreens.fm/'page =Nokogiri::HTML(open(url))header =page.at_css("h2.post-title" )title =header.textputs "এটি সর্বশেষ পর্বের কাঁচা শিরোনাম:#{header}"puts "এটি সর্বশেষ পর্বের শিরোনাম:#{title}"আমরা এখানে যা করেছি তা সমস্ত পদক্ষেপের প্রতিনিধিত্ব করে যা সাধারণত ওয়েব স্ক্র্যাপিংয়ের সাথে জড়িত থাকে—শুধুমাত্র একটি মাইক্রো স্তরে। আমাদের কোন ইউআরএল দরকার এবং কোন সাইটটি আনতে হবে তা আমরা ঠিক করি এবং আমরা সেগুলিকে একটি নতুন নোকোগিরি ডকুমেন্টে লোড করি। তারপরে আমরা সেই পৃষ্ঠাটি খুলি এবং একটি নির্দিষ্ট বিভাগকে টার্গেট করি৷
এখানে আমি শুধু সর্বশেষ পর্বের শিরোনাম জানতে চেয়েছিলাম।
at_css
ব্যবহার করে পদ্ধতি এবংh2.post-title
-এর জন্য একটি CSS নির্বাচক নিষ্কাশন পয়েন্ট টার্গেট করার জন্য আমার প্রয়োজন ছিল। যদিও এই পদ্ধতির সাহায্যে আমরা শুধুমাত্র এই একক উপাদানটিকে স্ক্র্যাপ করব। এটি আমাদের সম্পূর্ণ নির্বাচক দেয় - যা বেশিরভাগ সময় আমাদের যা প্রয়োজন তা হয় না। তাই আমরাtext
এর মাধ্যমে এই নোডের শুধুমাত্র ভিতরের পাঠ্য অংশটি বের করি পদ্ধতি তুলনা করার জন্য, আপনি নীচের শিরোনাম এবং পাঠ্য উভয়ের জন্য আউটপুট পরীক্ষা করতে পারেন।আউটপুট
এটি সাম্প্রতিক পর্বের কাঁচা শিরোনাম:David Heinemeier Hansson
এটি এর শিরোনাম সর্বশেষ পর্ব:ডেভিড হেইনমেয়ার হ্যানসনযদিও এই উদাহরণটির খুব সীমিত অ্যাপ্লিকেশন রয়েছে, এটিতে সমস্ত উপাদান রয়েছে, সমস্ত পদক্ষেপ যা আপনাকে বুঝতে হবে। আমি মনে করি এটি কতটা সহজ তা চমৎকার। কারণ এই উদাহরণ থেকে এটি স্পষ্ট নাও হতে পারে, আমি এই টুলটি কতটা শক্তিশালী হতে পারে তা নির্দেশ করতে চাই। দেখা যাক নোকোগিরি স্ক্রিপ্ট দিয়ে আমরা আর কী করতে পারি।
মনোযোগ!
আপনি যদি একজন শিক্ষানবিস হন এবং এর জন্য প্রয়োজনীয় এইচটিএমএল কীভাবে লক্ষ্য করবেন তা নিশ্চিত না হন, তাহলে আপনার ব্রাউজারে ওয়েবসাইটগুলির বিষয়বস্তু কীভাবে পরিদর্শন করবেন তা জানতে আমি আপনাকে অনলাইনে অনুসন্ধান করার পরামর্শ দিচ্ছি। মূলত, সমস্ত প্রধান ব্রাউজার এই দিনগুলি এই প্রক্রিয়াটিকে সত্যিই সহজ করে তোলে।
ক্রোমে আপনাকে ওয়েবসাইটের একটি উপাদানে ডান-ক্লিক করতে হবে এবং পরিদর্শন বিকল্পটি বেছে নিতে হবে। এটি আপনার ব্রাউজারের নীচে একটি ছোট উইন্ডো খুলবে যা আপনাকে সাইটের DOM-এর এক্স-রে-এর মতো কিছু দেখায়। এটিতে আরও অনেক বিকল্প রয়েছে এবং আমি নিজেকে শিক্ষিত করার জন্য Google-এ কিছু সময় ব্যয় করার সুপারিশ করব। এই সময় বুদ্ধিমানের সাথে ব্যয় করা হয়!
css
css
পদ্ধতি আমাদের পছন্দের একটি একক উপাদানই নয়, পৃষ্ঠায় অনুসন্ধানের মানদণ্ডের সাথে মেলে এমন যেকোনো উপাদান দেবে। বেশ ঝরঝরে এবং সোজা!
some_scraper.rb
'nokogiri'require "open-uri"url ='https://betweenscreens.fm/'page =Nokogiri::HTML(open(url))headers =page.css("h2.post-title" )headers.each do |header| রাখে "এটি সর্বশেষ পর্বের কাঁচা শিরোনাম:#{header}"endheaders.each do |header| রাখে "এটি সর্বশেষ পর্বের শিরোনাম:#{header.text}"endআউটপুট
এটি সাম্প্রতিক পর্বের কাঁচা শিরোনাম:David Heinemeier Hansson
এটি কাঁচা শিরোনাম সর্বশেষ পর্বের:Zach Holman
এটি সর্বশেষ পর্বের কাঁচা শিরোনাম:Joel Glovier
এটি সাম্প্রতিক পর্বের কাঁচা শিরোনাম:João Ferreira
এটি সাম্প্রতিক পর্বের কাঁচা শিরোনাম:Corwin হ্যারেল
এটি সাম্প্রতিক পর্বের কাঁচা শিরোনাম:Roberto Machado
এটি সাম্প্রতিক পর্বের কাঁচা শিরোনাম:জেমস এডওয়ার্ড গ্রে II
এটি সর্বশেষ পর্বের শিরোনাম পর্ব:David Heinemeier Hansson এটি সর্বশেষ পর্বের শিরোনাম:Zach Holman এটি সর্বশেষ পর্বের শিরোনাম:Joel GlovierThis is t তিনি সর্বশেষ পর্বের শিরোনাম:João Ferreira এটি সর্বশেষ পর্বের শিরোনাম:Corwin Harrellএটি সর্বশেষ পর্বের শিরোনাম:Roberto Machado এটি সর্বশেষ পর্বের শিরোনাম:জেমস এডওয়ার্ড গ্রে IIএই উদাহরণে শুধুমাত্র সামান্য পার্থক্য হল যে আমি প্রথমে কাঁচা শিরোনামগুলিতে পুনরাবৃত্তি করি। আমি
text
দিয়ে এর ভিতরের পাঠ্যটিও বের করেছি পদ্ধতি নোকোগিরি স্বয়ংক্রিয়ভাবে পৃষ্ঠার শেষে থেমে যায় এবং স্বয়ংক্রিয়ভাবে কোথাও পেজিনেশন অনুসরণ করার চেষ্টা করে না।
ধরা যাক আমরা আরও কিছু তথ্য পেতে চাই, প্রতিটি পর্বের তারিখ এবং সাবটাইটেল বলুন। আমরা কেবল উপরের উদাহরণে প্রসারিত করতে পারি। যাইহোক এই ধাপে ধাপে নেওয়া একটি ভাল ধারণা। একটু কাজ করুন এবং পথে আরও জটিলতা যোগ করুন।
some_scraper.rb
require 'nokogiri'require "open-uri"url ='https://betweenscreens.fm/'page =Nokogiri::HTML(open(url))নিবন্ধ =page.css("article.index-articles" )articles.each do |article| শিরোনাম =article.at_css("h2.post-title") date =article.at_css(."post-date") সাবটাইটেল =article.at_css(."বিষয়-তালিকা") রাখে "এটি কাঁচা শিরোনাম:#{ শিরোনাম}" রাখে "এটি কাঁচা তারিখ:#{তারিখ}" রাখে "এটি কাঁচা উপশিরোনাম:#{সাবটাইটেল}\n\n" রাখে "এটি টেক্সট হেডার:#{header.text}" রাখে " এটি পাঠ্যের তারিখ:#{date.text}" রাখে "এটি পাঠ্য উপশিরোনাম:#{subtitle.text}\n\n"endআউটপুট
এটি কাঁচা শিরোনাম:David Heinemeier Hansson
এটি কাঁচা তারিখ:18 অক্টোবর | 2016এটি কাঁচা উপশিরোনাম:রেল সম্প্রদায় | স্বর | প্রযুক্তিগত মতভেদ | কমিউনিটি পুলিশিং | অকৃতজ্ঞতা | কোন গাধা অনুমোদিত | বেসক্যাম্প | ওপেন সোর্স ব্যক্তিত্ব | আকাঙ্খা | অনুপ্রেরণা পাহারা | দর্শকদের সাথে আচরণ | চাপ | সততা | বিভিন্ন মতামত | ছোট কথা
এটি টেক্সট হেডার:ডেভিড হেইনমেয়ার হ্যানসন এটি পাঠ্য তারিখ:18 অক্টোবর | 2016এই টেক্সট সাবটাইটেল:Rails community | স্বর | প্রযুক্তিগত মতভেদ | কমিউনিটি পুলিশিং | অকৃতজ্ঞতা | কোন গাধা অনুমোদিত | বেসক্যাম্প | ওপেন সোর্স ব্যক্তিত্ব | আকাঙ্খা | অনুপ্রেরণা পাহারা | দর্শকদের সাথে আচরণ | চাপ | সততা | বিভিন্ন মতামত | ছোট আলাপ এটি কাঁচা শিরোনাম:Zach Holman
এটি কাঁচা তারিখ:12 অক্টোবর | 2016এটি হল কাঁচা উপশিরোনাম:বখাস্ত করা | ট্যাবু | স্বচ্ছতা | ভিন্ন দৃষ্টিভঙ্গি | সময় | বৃদ্ধির পর্যায় | কর্মসংস্থান & ডেটিং | ম্যানেজার | ইচ্ছামত কর্মসংস্থান | প্রযুক্তি শিল্প | ইউরোপ | কম ঝুলন্ত ফল | কর্মক্ষমতা উন্নতির পরিকল্পনা | লক্ষ্য পূরণ | সারপ্রাইজ ফায়ারিংস | ফাস্ট ফায়ারিং | ভুল | কোম্পানি সংস্কৃতি | যোগাযোগ
এটি টেক্সট হেডার:জ্যাক হোলম্যান এটি পাঠ্য তারিখ:12 অক্টোবর | 2016এই টেক্সট সাবটাইটেল:Getting Fired | ট্যাবু | স্বচ্ছতা | ভিন্ন দৃষ্টিভঙ্গি | সময় | বৃদ্ধির পর্যায় | কর্মসংস্থান এবং ডেটিং | ম্যানেজার | ইচ্ছামত কর্মসংস্থান | প্রযুক্তি শিল্প | ইউরোপ | কম ঝুলন্ত ফল | কর্মক্ষমতা উন্নতির পরিকল্পনা | লক্ষ্য পূরণ | সারপ্রাইজ ফায়ারিংস | ফাস্ট ফায়ারিং | ভুল | কোম্পানি সংস্কৃতি | যোগাযোগ এটি কাঁচা শিরোনাম:Joel Glovier
এটি কাঁচা তারিখ:10 অক্টোবর | 2016এটি কাঁচা উপশিরোনাম:ডিজিটাল পণ্য ডিজাইন | পণ্য ডিজাইন @ GitHub | প্রেমময় ডিজাইন | অর্ডার & বিশৃঙ্খলা | অঙ্কন | ওয়েব ডিজাইন | হাসপাতাল রান | বৈচিত্র্য | স্টার্টআপ সংস্কৃতি | জীবন উন্নত করা | কিউর ইন্টারন্যাশনাল | অঙ্গার | অফলাইন প্রথম | হাসপাতালের তথ্য ব্যবস্থা | ডিজাইনার & ওপেন সোর্স
এটি টেক্সট হেডার:জোয়েল গ্লোভিয়ারএটি টেক্সট তারিখ:অক্টোবর 10 | 2016এটি টেক্সট সাবটাইটেল:ডিজিটাল পণ্য ডিজাইন | পণ্য ডিজাইন @ GitHub | প্রেমময় ডিজাইন | অর্ডার ও বিশৃঙ্খলা | অঙ্কন | ওয়েব ডিজাইন | হাসপাতাল রান | বৈচিত্র্য | স্টার্টআপ সংস্কৃতি | জীবন উন্নত করা | কিউর ইন্টারন্যাশনাল | অঙ্গার | অফলাইন প্রথম | হাসপাতালের তথ্য ব্যবস্থা | ডিজাইনার এবং ওপেন সোর্স এটি কাঁচা শিরোনাম:João Ferreira
এটি কাঁচা তারিখ:আগস্ট ২৬ | 2015এটি কাঁচা সাবটাইটেল:মাস্টারস @ ওয়ার্ক | সাবভিজুয়াল | সময়সীমা | ডিজাইন ব্যক্তিত্ব | ডিজাইন সমস্যা | দল | ঠেলাঠেলি খাম | আনন্দদায়ক অভিজ্ঞতা | নিখুঁত বিবরণ | কোম্পানির মান
এটি হল টেক্সট হেডার:João Ferreira এটি টেক্সট তারিখ:26 আগস্ট | 2015এটি টেক্সট সাবটাইটেল:Masters @ Work | সাবভিজুয়াল | সময়সীমা | ডিজাইন ব্যক্তিত্ব | ডিজাইন সমস্যা | দল | ঠেলাঠেলি খাম | আনন্দদায়ক অভিজ্ঞতা | নিখুঁত বিবরণ | কোম্পানির মানগুলিএটি কাঁচা শিরোনাম:করউইন হ্যারেল
এটি কাঁচা তারিখ:06 আগস্ট | 2015এটি কাঁচা উপশিরোনাম:প্রশ্ন ও উত্তর | 01 | বিশ্ববিদ্যালয় | গ্রাফিক ডিজাইন | ডিজাইন সেটআপ | মহৎ | পরমাণু | চিন্তাবট | কাজের অবস্থান | সহযোগিতা & জুড়ি | ভিম উকিল | প্রতিদিনের রুটিন | স্ট্যান্ডআপস | ক্লায়েন্ট | কফি হাঁটা | ইনভেস্টমেন্ট ফ্রাইডেস |
এটি টেক্সট হেডার:করউইন হ্যারেলএটি টেক্সট তারিখ:আগস্ট 06 | 2015এটি পাঠ্য উপশিরোনাম:প্রশ্নোত্তর | 01 | বিশ্ববিদ্যালয় | গ্রাফিক ডিজাইন | ডিজাইন সেটআপ | মহৎ | পরমাণু | চিন্তাবট | কাজের অবস্থান | সহযোগিতা ও জোড়া | ভিম উকিল | প্রতিদিনের রুটিন | স্ট্যান্ডআপস | ক্লায়েন্ট | কফি হাঁটা | ইনভেস্টমেন্ট ফ্রাইডার্স "পোস্ট-তারিখ">আগস্ট ০৩ | 2015এটি হল কাঁচা উপশিরোনাম:CEO @ Subvisual | রুবিকনফ পর্তুগাল | ক্রিয়েটর স্কুল | কনসালটেন্সি | কোম্পানির রোল মডেল | গ্রুপ বন্ধুরা | পর্তুগিজ স্টার্টআপ | রিব্র্যান্ডিং | ব্যবহৃত প্রযুক্তি | JS ফ্রেমওয়ার্ক | TDD & বিডিডি | স্টার্টআপ ভুল | শিক্ষার সংস্কৃতি | তরুণ উদ্যোক্তারা
এটি টেক্সট শিরোনাম:রবার্তো মাচাডো এটি পাঠ্য তারিখ:আগস্ট 03 | 2015এটি টেক্সট সাবটাইটেল:CEO @ Subvisual | রুবিকনফ পর্তুগাল | ক্রিয়েটর স্কুল | কনসালটেন্সি | কোম্পানির রোল মডেল | গ্রুপ বন্ধুরা | পর্তুগিজ স্টার্টআপ | রিব্র্যান্ডিং | ব্যবহৃত প্রযুক্তি | JS ফ্রেমওয়ার্ক | TDD &BDD | স্টার্টআপ ভুল | শিক্ষার সংস্কৃতি | তরুণ উদ্যোক্তারা এটি হল কাঁচা শিরোনাম:জেমস এডওয়ার্ড গ্রে II
এটি কাঁচা তারিখ:30 জুলাই | 2015এটি হল কাঁচা উপশিরোনাম:স্ক্রিনকাস্টিং | কম কোড | পঠন কোড | আটকা পড়া | রেলের কোডবেস | CodeNewbie | ছোট উদাহরণ | ভবিষ্যৎ পরিকল্পনা | পিপকোড | ফ্রিকোয়েন্সি & মূল্য
এটি পাঠ্য শিরোনাম:জেমস এডওয়ার্ড গ্রে IIএটি পাঠ্য তারিখ:30 জুলাই | 2015এটি টেক্সট সাবটাইটেল:স্ক্রিনকাস্টিং | কম কোড | পঠন কোড | আটকা পড়া | রেলের কোডবেস | CodeNewbie | ছোট উদাহরণ | ভবিষ্যৎ পরিকল্পনা | পিপকোড | ফ্রিকোয়েন্সি এবং মূল্যএই মুহুর্তে, আমাদের কাছে ইতিমধ্যে খেলার জন্য কিছু ডেটা রয়েছে। আমরা যে কোনো উপায়ে এটি গঠন বা কসাই করতে পারি। উপরোক্ত সহজভাবে আমাদের একটি পঠনযোগ্য ফ্যাশন কি আছে দেখানো উচিত. অবশ্যই আমরা
text
এর সাথে রেগুলার এক্সপ্রেশন ব্যবহার করে এর প্রতিটির গভীরে খনন করতে পারি পদ্ধতিআমরা যখন প্রকৃত পডকাস্ট সমস্যার সমাধান করতে পারব তখন আমরা এটিকে আরও বিশদভাবে দেখব। এটি regexp-এর একটি ক্লাস হবে না, তবে আপনি এটির আরও কিছু কাজ দেখতে পাবেন—কিন্তু চিন্তার কিছু নেই, আপনার মস্তিষ্কে রক্তক্ষরণ করার মতো নয়।
গুণাবলী
এই পর্যায়ে যা সহজ হতে পারে তা হল
href
বের করা পাশাপাশি পৃথক পর্বের জন্য। এটা আর সহজ হতে পারে না।some_scraper.rb
require 'nokogiri'require "open-uri"url ='https://betweenscreens.fm/'page =Nokogiri::HTML(open(url))নিবন্ধ =page.css("article.index-articles" )articles.each do |article| শিরোনাম =article.at_css("h2.post-title") date =article.at_css(."post-date") সাবটাইটেল =article.at_css("topic-list") লিঙ্ক =article.at_css("h2.post) -টাইটেল ক :#{সাবটাইটেল}" রাখে "এটি হল কাঁচা লিঙ্ক:#{link}\n\n" রাখে "এটি টেক্সট হেডার:#{header.text}" রাখে "এটি টেক্সট তারিখ:#{তারিখ। text}" রাখে "এটি টেক্সট সাবটাইটেল:#{subtitle.text}" বলে "এটি হল কাঁচা লিঙ্ক:#{podcast_url}#{link[:href]}\n\n"endএখানে মনোযোগ দিতে সবচেয়ে গুরুত্বপূর্ণ বিট হল
[:href]
এবংpodcast_url
. আপনি যদি[:]
ট্যাগ করেন আপনি সহজভাবে লক্ষ্য নির্বাচক থেকে একটি বৈশিষ্ট্য নিষ্কাশন করতে পারেন. আমি আরও কিছুটা বিমূর্ত করেছি, তবে আপনি নীচে আরও স্পষ্টভাবে দেখতে পাচ্ছেন যে এটি কীভাবে কাজ করে৷...href =article.at_css("h2.post-title a")[:href]...একটি সম্পূর্ণ এবং দরকারী URL পেতে, আমি একটি ভেরিয়েবলে রুট ডোমেন সংরক্ষণ করেছি এবং প্রতিটি পর্বের জন্য সম্পূর্ণ URL তৈরি করেছি৷
...podcast_url ="https://betweenscreens.fm/"পুট "এটি কাঁচা লিঙ্ক:#{podcast_url}#{link[:href]}\n\n"...আসুন আউটপুটটি দ্রুত দেখে নেওয়া যাক:
আউটপুট
এটি কাঁচা শিরোনাম:Jason Long
এটি কাঁচা তারিখ:অক্টো 25 | 2016এটি কাঁচা উপশিরোনাম:ওপেন সোর্স | সহানুভূতি | নিম্ন বাধা | শেখার টুল | ডিজাইন অবদান | গিট ওয়েবসাইট | ব্র্যান্ডিং | গিটহাব | নিওভিম | Tmux | ডিজাইন প্রেম | শ্রোতাদের জানা | কাজ দেখাচ্ছে | ড্রিবল | অগ্রগতি | আইডিয়াস
এটি কাঁচা লিঙ্ক:জেসন লং এটি পাঠ্য শিরোনাম:জেসন লংএটি পাঠ্য তারিখ:25 অক্টোবর | 2016এটি টেক্সট সাবটাইটেল:ওপেন সোর্স | সহানুভূতি | নিম্ন বাধা | শেখার টুল | ডিজাইন অবদান | গিট ওয়েবসাইট | ব্র্যান্ডিং | গিটহাব | নিওভিম | Tmux | ডিজাইন প্রেম | শ্রোতাদের জানা | কাজ দেখাচ্ছে | ড্রিবল | অগ্রগতি | IdeasThis is the href:https://betweenscreens.fm/episodes/143/এটি কাঁচা শিরোনাম:David Heinemeier Hansson
এটি কাঁচা তারিখ:অক্টোবর 18 | 2016এটি কাঁচা উপশিরোনাম:রেল সম্প্রদায় | স্বর | প্রযুক্তিগত মতভেদ | কমিউনিটি পুলিশিং | অকৃতজ্ঞতা | কোন গাধা অনুমোদিত | বেসক্যাম্প | ওপেন সোর্স ব্যক্তিত্ব | আকাঙ্খা | অনুপ্রেরণা পাহারা | দর্শকদের সাথে আচরণ | চাপ | সততা | বিভিন্ন মতামত | ছোট কথা
এটি কাঁচা লিঙ্ক:David Heinemeier Hansson এটি পাঠ্য শিরোনাম:David Heinemeier Hansson এটি পাঠ্য তারিখ:অক্টোবর 18 | 2016এই টেক্সট সাবটাইটেল:Rails community | স্বর | প্রযুক্তিগত মতভেদ | কমিউনিটি পুলিশিং | অকৃতজ্ঞতা | কোন গাধা অনুমোদিত | বেসক্যাম্প | ওপেন সোর্স ব্যক্তিত্ব | আকাঙ্খা | অনুপ্রেরণা পাহারা | দর্শকদের সাথে আচরণ | চাপ | সততা | বিভিন্ন মতামত | ছোট আলাপ এটি হল href:https://betweenscreens.fm/episodes/142/এটি কাঁচা শিরোনাম:Zach Holman
এটি কাঁচা তারিখ:অক্টোবর 12 | 2016এটি হল কাঁচা উপশিরোনাম:বখাস্ত করা | ট্যাবু | স্বচ্ছতা | ভিন্ন দৃষ্টিভঙ্গি | সময় | বৃদ্ধির পর্যায় | কর্মসংস্থান & ডেটিং | ম্যানেজার | ইচ্ছামত কর্মসংস্থান | প্রযুক্তি শিল্প | ইউরোপ | কম ঝুলন্ত ফল | কর্মক্ষমতা উন্নতির পরিকল্পনা | লক্ষ্য পূরণ | সারপ্রাইজ ফায়ারিংস | ফাস্ট ফায়ারিং | ভুল | কোম্পানি সংস্কৃতি | যোগাযোগ
এটি কাঁচা লিঙ্ক:Zach Holman এটি পাঠ্য শিরোনাম:Zach Holman এটি পাঠ্য তারিখ:12 অক্টোবর | 2016এই টেক্সট সাবটাইটেল:Getting Fired | ট্যাবু | স্বচ্ছতা | ভিন্ন দৃষ্টিভঙ্গি | সময় | বৃদ্ধির পর্যায় | কর্মসংস্থান এবং ডেটিং | ম্যানেজার | ইচ্ছামত কর্মসংস্থান | প্রযুক্তি শিল্প | ইউরোপ | কম ঝুলন্ত ফল | কর্মক্ষমতা উন্নতির পরিকল্পনা | লক্ষ্য পূরণ | সারপ্রাইজ ফায়ারিংস | ফাস্ট ফায়ারিং | ভুল | কোম্পানি সংস্কৃতি | যোগাযোগ এটি হল href:https://betweenscreens.fm/episodes/141/এটি কাঁচা শিরোনাম:Joel Glovier
এই হল কাঁচা তারিখ:অক্টোবর 10 | 2016এটি কাঁচা উপশিরোনাম:ডিজিটাল পণ্য ডিজাইন | পণ্য ডিজাইন @ GitHub | প্রেমময় ডিজাইন | অর্ডার & বিশৃঙ্খলা | অঙ্কন | ওয়েব ডিজাইন | হাসপাতাল রান | বৈচিত্র্য | স্টার্টআপ সংস্কৃতি | জীবন উন্নত করা | কিউর ইন্টারন্যাশনাল | অঙ্গার | অফলাইন প্রথম | হাসপাতালের তথ্য ব্যবস্থা | ডিজাইনার & ওপেন সোর্স
এটি কাঁচা লিঙ্ক:Joel Glovier এটি হল টেক্সট হেডার:Joel Glovierএটি টেক্সট তারিখ:অক্টোবর 10 | 2016এটি টেক্সট সাবটাইটেল:ডিজিটাল পণ্য ডিজাইন | পণ্য ডিজাইন @ GitHub | প্রেমময় ডিজাইন | অর্ডার ও বিশৃঙ্খলা | অঙ্কন | ওয়েব ডিজাইন | হাসপাতাল রান | বৈচিত্র্য | স্টার্টআপ সংস্কৃতি | জীবন উন্নত করা | কিউর ইন্টারন্যাশনাল | অঙ্গার | অফলাইন প্রথম | হাসপাতালের তথ্য ব্যবস্থা | ডিজাইনার এবং ওপেন সোর্স এটি হল href:https://betweenscreens.fm/episodes/140/এটি কাঁচা শিরোনাম:João Ferreira
এটি কাঁচা তারিখ:অগাস্ট ২৬ | 2015এটি কাঁচা সাবটাইটেল:মাস্টারস @ ওয়ার্ক | সাবভিজুয়াল | সময়সীমা | ডিজাইন ব্যক্তিত্ব | ডিজাইন সমস্যা | দল | ঠেলাঠেলি খাম | আনন্দদায়ক অভিজ্ঞতা | নিখুঁত বিবরণ | কোম্পানির মান
এটি কাঁচা লিঙ্ক:João Ferreira এটি হল টেক্সট হেডার:João Ferreiraএটি হল টেক্সট তারিখ:26 আগস্ট | 2015এটি টেক্সট সাবটাইটেল:Masters @ Work | সাবভিজুয়াল | সময়সীমা | ডিজাইন ব্যক্তিত্ব | ডিজাইন সমস্যা | দল | ঠেলাঠেলি খাম | আনন্দদায়ক অভিজ্ঞতা | নিখুঁত বিবরণ | কোম্পানির মানগুলিএটি হল href:https://betweenscreens.fm/episodes/139/এটি কাঁচা শিরোনাম:Corwin Harrell
এটি কাঁচা তারিখ:অগস্ট 06 | 2015এটি কাঁচা উপশিরোনাম:প্রশ্ন ও উত্তর | 01 | বিশ্ববিদ্যালয় | গ্রাফিক ডিজাইন | ডিজাইন সেটআপ | মহৎ | পরমাণু | চিন্তাবট | কাজের অবস্থান | সহযোগিতা & জুড়ি | ভিম উকিল | প্রতিদিনের রুটিন | স্ট্যান্ডআপস | ক্লায়েন্ট | কফি হাঁটা | বিনিয়োগ শুক্রবার |
এটি কাঁচা লিঙ্ক:Corwin Harrell এটি পাঠ্য শিরোনাম:Corwin Harrellএটি পাঠ্য তারিখ:আগস্ট 06 | 2015এটি পাঠ্য উপশিরোনাম:প্রশ্নোত্তর | 01 | বিশ্ববিদ্যালয় | গ্রাফিক ডিজাইন | ডিজাইন সেটআপ | মহৎ | পরমাণু | চিন্তাবট | কাজের অবস্থান | সহযোগিতা ও জোড়া | ভিম উকিল | প্রতিদিনের রুটিন | স্ট্যান্ডআপস | ক্লায়েন্ট | কফি হাঁটা | শুক্রবার ইনভেস্টমেন্ট /a>এটি কাঁচা তারিখ:অগস্ট ০৩ | 2015এটি হল কাঁচা উপশিরোনাম:CEO @ Subvisual | রুবিকনফ পর্তুগাল | ক্রিয়েটর স্কুল | কনসালটেন্সি | কোম্পানির রোল মডেল | গ্রুপ বন্ধুরা | পর্তুগিজ স্টার্টআপ | রিব্র্যান্ডিং | ব্যবহৃত প্রযুক্তি | JS ফ্রেমওয়ার্ক | TDD & বিডিডি | স্টার্টআপ ভুল | শিক্ষার সংস্কৃতি | তরুণ উদ্যোক্তারা
এটি কাঁচা লিঙ্ক:Roberto Machado এটি পাঠ্য শিরোনাম:Roberto Machado এটি পাঠ্য তারিখ:আগস্ট 03 | 2015এটি টেক্সট সাবটাইটেল:CEO @ Subvisual | রুবিকনফ পর্তুগাল | ক্রিয়েটর স্কুল | কনসালটেন্সি | কোম্পানির রোল মডেল | গ্রুপ বন্ধুরা | পর্তুগিজ স্টার্টআপ | রিব্র্যান্ডিং | ব্যবহৃত প্রযুক্তি | JS ফ্রেমওয়ার্ক | TDD &BDD | স্টার্টআপ ভুল | শিক্ষার সংস্কৃতি | তরুণ উদ্যোক্তারা এটি হল href:https://betweenscreens.fm/episodes/137/ঝরঝরে, তাই না? আপনি
[:class]
এক্সট্র্যাক্ট করতে একই কাজ করতে পারেন একজন নির্বাচকের।require 'nokogiri'require "open-uri"url ='https://betweenscreens.fm/'page =Nokogiri::HTML(open(url))body_classes =page.at_css("body")[:classযদি সেই নোডের একাধিক ক্লাস থাকে, আপনি তাদের সবগুলোর একটি তালিকা পাবেন।
নোড নেভিগেশন
- পিতামাতা
- শিশুরা
- আগের_ভাই
- পরবর্তী_ভাই
আমরা CSS বা এমনকি jQuery-তে গাছের কাঠামো নিয়ে কাজ করতে অভ্যস্ত। নোকোগিরি যদি এই ধরনের গাছের মধ্যে সরানোর জন্য একটি সহজ API অফার না করে তবে এটি একটি বেদনাদায়ক হবে৷
some_scraper.rb
require 'nokogiri'require "open-uri"url ='https://betweenscreens.fm/'page =Nokogiri::HTML(open(url))header =page.at_css("h2.post-title" )header_children =page.at_css("h2.post-title").childrenheader_parent =page.at_css("h2.post-title").parentheader_prev_sibling =page.at_css("h2.post-title").previous_siblingputs "#{ শিরোনাম}\n\n"পুটে "#{header_children}\n\n"পুটে "#{header_parent}\n\n"পুটে "#{header_prev_sibling}\n\n"
আউটপুট
#headerজেসন লং
#header_childrenজেসন দীর্ঘ #header_parentঅক্টো 25 | 2016 #header_previous_siblingঅক্টোবর 25 | 2016জেসন লং
ওপেন সোর্স | সহানুভূতি | নিম্ন বাধা | শেখার টুল | ডিজাইন অবদান | গিট ওয়েবসাইট | ব্র্যান্ডিং | গিটহাব | নিওভিম | Tmux | ডিজাইন প্রেম | শ্রোতাদের জানা | কাজ দেখাচ্ছে | ড্রিবল | অগ্রগতি | ধারণা
আপনি নিজেই দেখতে পাচ্ছেন, এটি বেশ শক্তিশালী জিনিস—বিশেষ করে যখন আপনি .parent
দেখেন একবারে সংগ্রহ করতে সক্ষম হয়েছিল। হাতে একগুচ্ছ নোড সংজ্ঞায়িত করার পরিবর্তে, আপনি সেগুলি পাইকারি সংগ্রহ করতে পারেন।
আপনি এমনকি আরো জড়িত ট্রাভার্সাল জন্য তাদের চেইন করতে পারেন. আপনি অবশ্যই এটিকে আপনার পছন্দ মতো জটিল হিসাবে নিতে পারেন, তবে আমি আপনাকে সতর্ক করব জিনিসগুলি সহজ রাখতে। এটি দ্রুত একটু অপ্রীতিকর এবং বোঝা কঠিন হতে পারে। মনে রাখবেন, "এটি সহজ রাখুন, বোকা!"
...header_parent_parent =page.at_css("h2.post-title").parent.parentheader_prev_sibling_parent_children =page.at_css("h2.post-title").previous_sibling.parent.children...
some_scraper.rb
require 'nokogiri'require "open-uri"url ='https://betweenscreens.fm/'page =Nokogiri::HTML(open(url))header =page.at_css("h2.post-title" )header_prev_sibling_children =page.at_css("h2.post-title").previous_sibling.childrenheader_parent_parent =page.at_css("h2.post-title").parent.parentheader_prev_sibling_parent =page.at_css("h2.post-post))। previous_sibling.parentheader_prev_sibling_parent_children =page.at_css("h2.post-title").previous_sibling.parent.childrenputs "#{header}\n\n"পুট করে "#{header_prev_sibling_children}\n\n"parent_puts}#{header_put} n\n"পুটে "#{header_prev_sibling_parent}\n\n"পুটে "#{header_prev_sibling_parent_children}\n\n"
আউটপুট
#headerজেসন লং
#header_previous_sibling_childrenOct 25 | 2016#header_parent_parent
জেসন লং
ওপেন সোর্স | সহানুভূতি | নিম্ন বাধা | শেখার টুল | ডিজাইন অবদান | গিট ওয়েবসাইট | ব্র্যান্ডিং | গিটহাব | নিওভিম | Tmux | ডিজাইন প্রেম | শ্রোতাদের জানা | কাজ দেখাচ্ছে | ড্রিবল | অগ্রগতি | ধারণা
জেসন লং
ওপেন সোর্স | সহানুভূতি | নিম্ন বাধা | শেখার টুল | ডিজাইন অবদান | গিট ওয়েবসাইট | ব্র্যান্ডিং | গিটহাব | নিওভিম | Tmux | ডিজাইন প্রেম | শ্রোতাদের জানা | কাজ দেখাচ্ছে | ড্রিবল | অগ্রগতি | ধারণা
জেসন লং
ওপেন সোর্স | সহানুভূতি | নিম্ন বাধা | শেখার টুল | ডিজাইন অবদান | গিট ওয়েবসাইট | ব্র্যান্ডিং | গিটহাব | নিওভিম | Tmux | ডিজাইন প্রেম | শ্রোতাদের জানা | কাজ দেখাচ্ছে | ড্রিবল | অগ্রগতি | ধারণা
চূড়ান্ত চিন্তা
নোকোগিরি একটি বিশাল লাইব্রেরি নয়, তবে এটিতে অনেক কিছু দেওয়ার আছে। আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি এখন পর্যন্ত যা শিখেছেন তা নিয়ে খেলুন এবং আপনি যখন দেয়ালে আঘাত করবেন তখন এটির ডকুমেন্টেশনের মাধ্যমে আপনার জ্ঞান প্রসারিত করুন। তবে নিজেকে ঝামেলায় ফেলবেন না!
আপনি কী করতে পারেন এবং এটি কীভাবে কাজ করে তা বোঝার জন্য এই ছোট্ট ভূমিকাটি আপনাকে ভালভাবে পেতে হবে। আমি আশা করি আপনি নিজে থেকে এটিকে আরও একটু অন্বেষণ করবেন এবং এটির সাথে কিছু মজা পাবেন। আপনি নিজে থেকেই জানতে পারবেন, এটি একটি সমৃদ্ধ হাতিয়ার যা দিতে থাকে।