স্থানীয় এইচটিএমএল ফাইল থেকে নির্দিষ্ট URL গুলি পার্স করা P


0

আমি একটি সাধারণ ব্যাশ-স্ক্রিপ্ট / কমান্ডের সাহায্যে সংরক্ষিত এইচটিএমএল- ফাইল থেকে কিছু ইউআরএল বিশ্লেষণ করতে চাই , তাই আমি এগুলি wgetলেটারের মাধ্যমে ডাউনলোড করতে পারি ।
আমার এখন পর্যন্ত যা আছে তা হ'ল:

awk 'BEGIN{ RS="<a *href *= *\""} NR>2 {sub(/".*/,"");print; }' index.html >> url-list.txt

যা আমার এইচটিএমএল-ফাইলের ভিতরে থাকা প্রতিটি লিঙ্ককে একটি ঝরঝরে টেক্সট-ডকুমেন্টে লিখে দেয় writes

আমার যা দরকার তা হ'ল কেবল নির্দিষ্ট লিঙ্ক

  • একটি নির্দিষ্ট ডোমেন থেকে
  • উদাহরণস্বরূপ সমস্ত .ogg ফাইল

শেষ পর্যন্ত দেখতে সমস্ত কিছু:

http://www.foo.com/(randomfolder)/(randombasename).ogg

অথবা

http://subdomain.foo.com/(randomfolder)/(anotherrandomsubfolder)/(randombasename).ogg

আগাম ধন্যবাদ!


খাঁটি বাশ / সেড / অ্যাজক দিয়ে এটি করা দরকার বা স্ক্রিপ্টিং ভাষাগুলি কি খুব ভাল?
slhck

বাশের সাথে এটির প্রয়োজন হবে যাতে আমি এটি লিখে অন্যান্য স্ক্রিপ্টগুলির সাথে সহজেই মার্জ করতে পারি, ধন্যবাদ। আমি এটিতে বেশ নতুন ...
কাই

উত্তর:


3

আপনি বলছেন যে এটি "বাশে" আপনার করা দরকার, তবে আপনার মনে হয় "স্ক্রিপ্টে" এবং "খাঁটি বাশ সিনট্যাক্স ব্যবহার না করে" (কোনও পার্থক্য রয়েছে)। আমি ধরে নিয়েছি আপনি "স্ক্রিপ্টে" অর্থ চাইছেন।


আপনি যদি কোনও নথিতে পৃথক লাইনগুলিতে সমস্ত লিঙ্কগুলি সংরক্ষণ করে থাকেন তবে আপনি ডোমেনে সমস্ত লিঙ্কগুলি http://www.example.com/উদাহরণ সহ চয়ন করতে পারেন

grep "^http://www\.example\.com/" filewithlinks.txt

বা সমস্ত লিঙ্কের দিয়ে শেষ .oggসঙ্গে

grep "\.ogg$" filewithlinks.txt

(ব্যাকস্ল্যাশ পূর্ববর্তী সময়কালগুলি " ." চিহ্নটি থেকে রক্ষা পাওয়া যা অন্যথায় "কোনও অক্ষর" এর অর্থ। " \." এর পরিবর্তে একটি আক্ষরিক সময় বোঝায় escap

আপনি সরাসরি awk কমান্ডে লাইন মিলও করতে পারতেন , তবে সময়ে সময়ে এটি পরিবর্তন করা আরও জটিল হবে, আমি বিশ্বাস করি। সবচেয়ে সহজ উপায় হ'ল কোনও ফাইলের লিঙ্কের সম্পূর্ণ তালিকা আপনি যেমন সংরক্ষণ করেন এবং তারপরে grepউপরের মত উদাহরণ সহ ফাইলটি অনুসন্ধান করুন । তারপরেও আপনি যদি মিলের প্যাটার্নটি পরিবর্তন করতে চান তবে আপনাকে আবার দস্তাবেজটি ডাউনলোড এবং বিশ্লেষণ করতে হবে না।


হ্যাঁ, ধন্যবাদ, আমি বোঝাতে চাইছি এটি সরল বাশ স্ক্রিপ্টের সাথে করণীয়, অজড, সেড বা অন্য কিছু ব্যবহার করে (যেমন ট্যাগগুলির দ্বারা বোঝানো হয়েছে)। ----- আমি আমার সংরক্ষিত এইচটিএমএল-পৃষ্ঠায় আপনার পরামর্শটি চেষ্টা করেছি, কিন্তু এটি কার্যকর হয়নি। আমার স্ক্রিপ্ট উপরের প্রতিটি ইউআরএল পার্স করে (পড়বে) যা এটি a hrefএইচটিএমএল ফাইলের ট্যাগগুলির ভিতরে খুঁজে পায় এবং সেগুলি লাইন দ্বারা লাইন একটি সরল txt ফাইলগুলিতে অনুলিপি করে। আমি কী বলতে চাইছি তা দেখতে আপনি আমাদের স্ক্রিপ্টগুলি চেষ্টা করতে চাইতে পারেন। উদাহরণস্বরূপ, এই পৃষ্ঠাটি সংরক্ষণ করুন, তারপরে কেবল একটি লিঙ্কগুলিই শুরু করুন যা meta.superuser.com বা superuser.com/users অনুসরণ করে ...
কাই

@ কাই: আমি এটি একটি সংরক্ষিত এইচটিএমএল পৃষ্ঠায় চেষ্টা করেছি। আপনার awkস্ক্রিপ্ট প্রতি লাইন প্রতি লিঙ্কযুক্ত একটি ফাইল রেন্ডার করেছে, যা আমি filewithlinks.txtউপরে কল করেছি। grepআমি যেমন লিখেছি (নোট: নয় index.html) এই ফাইলটিতে উপরোক্ত হিসাবে ব্যবহার করা যেমনটি আমি বর্ণনা করেছি তেমনি আপনার জন্যও উচিত। কয়েকটি সাধারণ grepউদাহরণ অনুসন্ধান করুন যদি এই সরঞ্জামটি আপনার জন্য নতুন হয় (এটি খুব সহজ: এটি প্রদত্ত অভিব্যক্তিটির সাথে মেলে এমন সমস্ত লাইন মুদ্রণ করে " ^" "মানে রেখার শুরু," $"মানে লাইনটির সমাপ্তি)।
ড্যানিয়েল অ্যান্ডারসন

ওক, ধন্যবাদ, আমি দুঃখিত, ওভারড্রেড আমাকে তখন দুজনকে একত্রিত করতে হবে। আমি চেষ্টা করেছিলাম grep "^http://*superuser\.com/" filewithlinksfromsuperuser.txt >> allsuperuserlinks.txtকিন্তু এটি তখনই আমাকে সুপারইউজার ডটকমের লিঙ্কগুলি পেয়েছিল, যখন আমি সাবডোমেনগুলি ব্লগ.সুপারসার ডটকম এবং মেটা.সুপারসার ডটকমকেও চেয়েছিলাম ... আমি কীভাবে তারকাচিহ্নটি সঠিকভাবে ব্যবহার করব ? (জোর দিয়েছিলেন কারণ এটি আমার প্রশ্নের অংশ ছিল, দুঃখিত) এই লিঙ্কগুলিতে গ্রাফিকের যে কোনও উপায়ে নির্দিষ্ট পরিমাণ সংখ্যা রয়েছে, যেমন www.foo.com/12345 এবং www.foo.com/subfolder/123456। বা আমি একটি নতুন প্রশ্ন খুলতে হবে?
কাই

@ কাই: এটি সমস্তটির কার্যকারিতা grep(এই নির্দিষ্ট ক্ষেত্রে: ব্যবহার করুন .*, যেহেতু " ." এর অর্থ "কোনও চরিত্র", এবং " *" এর অর্থ "পূর্ববর্তী অক্ষর শূন্য বা আরও বেশি বার")। আপনার আরও উন্নত ক্ষেত্রে নিয়মিত প্রকাশ করতে হবে, তবে আকাশটি সীমা (ব্যবহার করার সময় আরও বেশি grep -E), যা মন্তব্য ক্ষেত্রের জন্য খুব বেশি তথ্য ধারণ করে :-)।
ড্যানিয়েল অ্যান্ডারসন

ঠিক আছে, এই সমাধানের জন্য ধন্যবাদ। --- আমি যে গ্রেপটি খুঁজছি তা grep "^http://.*superuser\.com/" filewithlinksfromsuperuser.txt >> su-subdomainlinks.txtgrep "^http://superuser\.com/\users/[0-9]\{3,6\}" filewithlinksfromsuperuser.txt >> all su-users-links.txt
কাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.