HTTP ডাউনলোডে ওয়াইল্ডকার্ড সহ উইজেট w


53

আমার উইজেট ব্যবহার করে একটি ফাইল ডাউনলোড করতে হবে তবে ফাইলের নামটি কী হবে তা আমি ঠিক জানি না।

https://foo/bar.1234.tar.gz

ম্যান পেজ অনুসারে , কোনও এফটিপি সাইটের সাথে লেনদেন করার সময় উইজেট আপনাকে বন্ধ করতে এবং গ্লোব্বিং করতে দেয়, তবে আমার একটি HTTP url রয়েছে।

উইজেট ব্যবহার করার সময় আমি কীভাবে একটি ওয়াইল্ডকার্ড ব্যবহার করতে পারি? আমি gnu wget ব্যবহার করছি।

জিনিস আমি চেষ্টা করেছি।

/usr/local/bin/wget -r "https://foo/bar.*.tar.gz" -P /tmp

হালনাগাদ

-এ ব্যবহারের ফলে সার্ভারের .tar.gz এ থাকা সমস্ত ফাইল ডাউনলোড হতে পারে।

/usr/local/bin/wget -r "https://foo/" -P /tmp -A "bar.*.tar.gz"

হালনাগাদ

উত্তরগুলি থেকে, এটি সিনট্যাক্স যা শেষ পর্যন্ত কাজ করেছিল।

/usr/local/bin/wget -r -l1 -np "https://foo" -P /tmp -A "bar*.tar.gz"

2
এটি আপনি যা খুঁজছেন ঠিক তা নয় তবে এটি সম্পর্কিত: কার্লের বেসিক ওয়াইল্ডকার্ডগুলি ব্যবহার করার ক্ষমতা রয়েছে, যেমন:curl "http://example.com/picture[1-10].jpg" -o "picture#1.jpg"
হ্যালো ওয়ার্ল্ড

1
আমার জন্য এক gotcha ছিল -e robots=offপরামিতির না : আনুগত্য কর robots.txt এর stackoverflow.com/a/11124664/1097104
Juuso Ohtonen

আমি পতাকা যোগ পাওয়া -nHএবং --cut-dirs=<number>এছাড়াও দরকারী ছিল
রান্ডাল

উত্তর:


62

আমি মনে করি এই সুইচগুলি আপনি যা চান তা করবে wget:

   -A acclist --accept acclist
   -R rejlist --reject rejlist
       Specify comma-separated lists of file name suffixes or patterns to 
       accept or reject. Note that if any of the wildcard characters, *, ?,
       [ or ], appear in an element of acclist or rejlist, it will be 
       treated as a pattern, rather than a suffix.

   --accept-regex urlregex
   --reject-regex urlregex
       Specify a regular expression to accept or reject the complete URL.

উদাহরণ

$ wget -r --no-parent -A 'bar.*.tar.gz' http://url/dir/

15

এটি HTTP- র সাথে সরাসরি কাজ করতে পারে না এমন একটি ভাল কারণ রয়েছে এবং এটি কোনও URL টি কোনও ফাইল পাথ নয় যদিও /ডিলিমিটার হিসাবে ব্যবহার করা এটির মতো দেখতে তৈরি করতে পারে এবং তারা কখনও কখনও তার সাথে মিল রাখে। 1

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

এই গুরুত্বপূর্ণ কারণ যদি আপনি বলে উপর, সবকিছু একটি উল্লিখিত glob যার একটি subpath হয় প্রয়োগ করতে চান হয়, http://foo/bar/যদি না সার্ভারে কিছু প্রক্রিয়া যেমন (যেমন উপরোক্ত সূচক) সঙ্গে আপনি প্রদান করতে প্রদান করে, এটা উল্লিখিত glob আবেদন করতে কিছু নেই করারঅনুসন্ধানের জন্য এখানে কোনও ফাইল সিস্টেম নেই। উদাহরণস্বরূপ, কেবলমাত্র আপনি জানেন যে পৃষ্ঠাগুলি রয়েছে http://foo/bar/one.htmlএবং এর http://foo/bar/two.htmlঅর্থ এই নয় যে আপনি এর মাধ্যমে ফাইল এবং উপ-ডিরেক্টরিগুলির একটি তালিকা পেতে পারেন http://foo/bar/। এটির জন্য সার্ভারের 404 ফিরিয়ে দেওয়া সম্পূর্ণ প্রোটোকলের মধ্যে থাকবে। অথবা এটি ফাইলগুলির একটি তালিকা ফেরত দিতে পারে। অথবা এটি আপনাকে একটি দুর্দান্ত জেপিজি চিত্র পাঠাতে পারে। প্রভৃতি

সুতরাং এখানে এমন কোনও মানদণ্ড নেই যা wgetশোষণ করতে পারে। এএএএফআইসিটি, উইজেট প্রতিটি পৃষ্ঠায় লিঙ্কগুলি সক্রিয়ভাবে পরীক্ষা করে একটি পাথ শ্রেণিবিন্যাসকে আয়নাতে কাজ করে । অন্য কথায়, আপনি যদি পুনরাবৃত্তভাবে মিরর করেন তবে http://foo/bar/index.htmlএটি ডাউনলোড হয় index.htmlএবং তারপরে এমন লিঙ্কগুলি বের করে যা এটির একটি উপপথ। 2-A সুইচ কেবল একটি ফিল্টার যে এই প্রক্রিয়ায় প্রয়োগ করা হয়।

সংক্ষেপে, আপনি যদি জানেন যে এই ফাইলগুলি কোথাও সূচিত হয় তবে আপনি এটি ব্যবহার করে শুরু করতে পারেন -A। যদি তা না হয় তবে আপনার ভাগ্যের বাইরে।


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

২. এর অর্থ হ'ল এমন একটি বৈধ ইউআরএল থাকতে পারে http://foo/bar/alt/whatever/stuff/যা অন্তর্ভুক্ত হবে না কারণ এটি কোনওভাবেই লিঙ্কযুক্ত জিনিসগুলির সেটে কোনও কিছুর সাথে লিঙ্কযুক্ত নয় http://foo/bar/index.html। ফাইল সিস্টেমগুলির মতো নয়, ওয়েব সার্ভারগুলি তাদের সামগ্রীর বিন্যাসকে স্বচ্ছ করতে বাধ্য নয়, বা স্বজ্ঞাতভাবে এটি করার প্রয়োজন নেই।


0

উপরের '-A প্যাটার্ন' সমাধানটি কিছু ওয়েব পৃষ্ঠাগুলির সাথে কাজ না করে। এটি আমার কর্মক্ষেত্র, একটি ডাবল উইজেট সহ:

  1. wget পৃষ্ঠা
  2. grep নিদর্শন জন্য
  3. wget ফাইলগুলো)

উদাহরণ: ধরুন এটি কোনও নিউজ পডকাস্ট পৃষ্ঠা, এবং আমি পৃষ্ঠার শীর্ষ থেকে ৫ টি এমপি 3 ফাইল চাই:

wget -nv -O- https://example/page/ |
 grep -o '[^"[:space:]]*://[^"[:space:]]*pattern[^"[:space:]]*\.mp3' |
  head -n5 | while read x; do
    sleep $(($RANDOM % 5 + 5))  ## to appear gentle and polite
    wget -nv "$x"
  done

দ্য grepডাবল উদ্ধৃত কোন-স্পেস যে লিঙ্ক ধারণ জন্য খুঁজছেন হয় ://এবং আমার ফাইলের নাম pattern


এখানে র‌্যান্ডম কী?
রইকি

একটি শেল পরিবর্তনশীল, bashম্যান পৃষ্ঠা দেখুন। র্যান্ডম প্রতিবার এই পরামিতিটি উল্লেখ করা হয়, 0 এবং 32767 এর মধ্যে একটি এলোমেলো পূর্ণসংখ্যার উত্পন্ন হয়।
নাইটশিফট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.