যেমনটি আমি আমার মন্তব্যে বলেছি, সাধারণত নিয়মিত এক্সপ্রেশন দিয়ে HTML পার্স করা ভাল ধারণা নয়, তবে আপনি যে এইচটিএমএলটি পার্স করছেন তা যদি ভাল আচরণ করে তবে আপনি কখনও কখনও এটি থেকে দূরে সরে যেতে পারেন।
উপাদানগুলির href
বৈশিষ্ট্যে থাকা কেবলমাত্র ইউআরএলগুলি পেতে <a>
, একাধিক পর্যায়ে এটি করা আমার পক্ষে সহজ। আপনার মন্তব্যগুলি থেকে দেখে মনে হচ্ছে আপনি সম্পূর্ণ শীর্ষস্থানীয় URL নয়, কেবল শীর্ষ স্তরের ডোমেন চান। সেক্ষেত্রে আপনি এরকম কিছু ব্যবহার করতে পারেন:
grep -Eoi '<a [^>]+>' source.html |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
যেখানে source.html
বিশ্লেষণ করতে HTML কোড ধারণকারী ফাইল।
এই কোডটি সমস্ত শীর্ষ-স্তরের ইউআরএলগুলি মুদ্রণ করবে যা প্রতিটি লাইনের href
কোনও <a>
উপাদানের বৈশিষ্ট্য হিসাবে ঘটে । -i
প্রথম বিকল্প grep
কমান্ড তা নিশ্চিত করার জন্য এটি উভয় কাজ করবে হয় <a>
এবং <A>
উপাদান। আমার ধারণা, আপনি ওপরের কেস বৈশিষ্ট্যগুলি ক্যাপচার -i
করতে ২ য় জনকেও দিতে grep
পারেন HREF
, OTOH, আমি এই জাতীয় ভাঙা এইচটিএমএল উপেক্ষা করতে পছন্দ করব। :)
এর বিষয়বস্তু প্রক্রিয়া করতে http://google.com/
wget -qO- http://google.com/ |
grep -Eoi '<a [^>]+>' |
grep -Eo 'href="[^\"]+"' |
grep -Eo '(http|https)://[^/"]+'
আউটপুট
http://www.google.com.au
http://maps.google.com.au
https://play.google.com
http://www.youtube.com
http://news.google.com.au
https://mail.google.com
https://drive.google.com
http://www.google.com.au
http://www.google.com.au
https://accounts.google.com
http://www.google.com.au
https://www.google.com
https://plus.google.com
http://www.google.com.au
অস্ট্রেলিয়ান গুগল পৃষ্ঠায় আমি পুনঃনির্দেশিত হওয়ায় আমার আউটপুট অন্যান্য উদাহরণগুলির থেকে কিছুটা আলাদা।