Bash:
HTML পার্স করা

কিভাবে:

Bash HTML পার্সিং-এর জন্য প্রাথমিক পছন্দ নয়, তবে grep, awk, sed, অথবা বাহ্যিক টুলস যেমন lynx এর মাধ্যমে এটি করা সম্ভব। শক্তিশালীতা এর জন্য, আমরা libxml2 প্যাকেজ থেকে xmllint ব্যবহার করব।

# xmllint ইন্সটল করুন যদি প্রয়োজন হয়
sudo apt-get install libxml2-utils

# নমুনা HTML
cat > sample.html <<EOF
<html>
<head>
  <title>উদাহরণ পেজ</title>
</head>
<body>
  <h1>হ্যালো, Bash!</h1>
  <p id="myPara">Bash আমাকে পড়তে পারে।</p>
</body>
</html>
EOF

# শিরোনাম পার্স করুন
title=$(xmllint --html --xpath '//title/text()' sample.html 2>/dev/null)
echo "শিরোনাম হল: $title"

# ID দ্বারা অনুচ্ছেদ এক্সট্র্যাক্ট করুন
para=$(xmllint --html --xpath '//*[@id="myPara"]/text()' sample.html 2>/dev/null)
echo "অনুচ্ছেদ বিষয়বস্তু হল: $para"

আউটপুট:

শিরোনাম হল: উদাহরণ পেজ
অনুচ্ছেদ বিষয়বস্তু হল: Bash আমাকে পড়তে পারে।

গভীরে দেখা

পূর্বে, প্রোগ্রামাররা HTML স্ক্যান করার জন্য grep এর মতো regex-ভিত্তিক টুলস ব্যবহার করত, যা ছিল বিশৃঙ্খল। HTML নিয়মিত নয়—এটি প্রসঙ্গমূলক। ঐতিহ্যবাহী টুলস এই বিষয়টি উপেক্ষা করে এবং তা ভুলের সম্ভাবনা বাড়ায়।

বিকল্প? অনেক আছে। পাইথন দিয়ে বিউটিফুল স্যুপ, PHP দিয়ে DOMDocument, জাভাস্ক্রিপ্টে DOM পার্সার— এমন ভাষা যাদের লাইব্রেরি HTML এর গঠন বোঝার জন্য ডিজাইন করা।

Bash স্ক্রিপ্টে xmllint ব্যবহার করা সাধারণ কাজের জন্য দৃঢ়। এটি XML বোঝে এবং তত্ত্বাবধানে, XHTML। নিয়মিত HTML অনিশ্চিত হতে পারে, এটা সর্বদা XML এর কঠোর নিয়ম অনুসরণ করে না। xmllint HTML কে XML মডেলে পরিণত করে যা ভালভাবে গঠিত HTML এর জন্য ভালো কাজ করে, কিন্তু অগোছালো জিনিস নিয়ে সমস্যা তৈরি করতে পারে।

দেখুন