एक निर्देशिका डाउनलोड करने के लिए CURL


38

मैं CURL का उपयोग करके एक पूर्ण वेबसाइट निर्देशिका डाउनलोड करने का प्रयास कर रहा हूं। निम्न आदेश काम नहीं करता है:

curl -LO http://example.com/

यह एक त्रुटि देता है curl: Remote file name has no length!:।

लेकिन जब मैं ऐसा curl -LO http://example.com/someFile.typeकरता हूं: यह काम करता है। किसी भी विचार कैसे निर्दिष्ट निर्देशिका में सभी फ़ाइलों को डाउनलोड करने के लिए? धन्यवाद।

जवाबों:


33

हमेशा मेरे लिए काम करता है, इसमें कोई माता-पिता शामिल नहीं है और केवल वांछित निर्देशिका प्राप्त करने के लिए पुनरावर्ती है।

 wget --no-parent -r http://WEBSITE.com/DIRECTORY

1
यह स्वीकृत उत्तर होना चाहिए।
जुआन जिमेनेज़

गिट से एक फ़ोल्डर डाउनलोड करने की कोशिश कर रहा है। मैंने कोशिश की wget --no-parent -r http://WEBSITE.com/DIRECTORYऔर इसके बिना भी --no-parent- काम नहीं किया।
सैम-टी

32

HTTP में वास्तव में निर्देशिकाओं की धारणा नहीं है। पहले तीन ( http://example.com/) के अलावा अन्य स्लैश का कोई विशेष अर्थ नहीं है सिवाय ..सापेक्ष URL में सम्मान के । इसलिए जब तक सर्वर एक विशेष प्रारूप का अनुसरण नहीं करता है, तब तक "निर्दिष्ट निर्देशिका में सभी फ़ाइलों को डाउनलोड करने" का कोई तरीका नहीं है।

यदि आप पूरी साइट को डाउनलोड करना चाहते हैं, तो आपका सबसे अच्छा शर्त मुख्य पृष्ठ के सभी लिंक को पुनरावृत्ति करना है। कर्ल यह नहीं कर सकता, लेकिन wget कर सकता है। यह काम करेगा यदि वेबसाइट बहुत अधिक गतिशील नहीं है (विशेष रूप से, wget उन लिंक को नहीं देखेगा जो जावास्क्रिप्ट कोड द्वारा निर्मित हैं)। के साथ शुरू करें wget -r http://example.com/, और अधिक प्रासंगिक विकल्पों (पुनरावृत्ति की गहराई, बहिष्करण सूचियों, आदि) के लिए "मैनुअल पुनर्प्राप्ति विकल्प" और "पुनरावर्ती स्वीकार / अस्वीकार विकल्प" के तहत विकट मैनुअल में देखें।

यदि वेबसाइट स्वचालित डाउनलोड को ब्लॉक करने की कोशिश करती है, तो आपको उपयोगकर्ता एजेंट स्ट्रिंग ( -U Mozilla) को बदलने की आवश्यकता हो सकती है , और उपेक्षा करने के लिए robots.txt(एक खाली फ़ाइल बनाएं example.com/robots.txtऔर -ncविकल्प का उपयोग करें ताकि wget इसे सर्वर से डाउनलोड करने का प्रयास न करें)।


कैसे wget इसे करने में सक्षम है। ??
श्रीकांत

@ श्रीकण ने उन लिंक को खोजने के लिए HTML को पार्स किया और उन लिंक को पुन: डाउनलोड (इनका चयन) किया।
गिल्स एसओ- बुराई को रोकना '

यदि फ़ाइलों में कोई आंतरिक लिंक नहीं है, तो पुनरावर्ती डाउनलोड सभी फ़ाइलों को प्राप्त करने में विफल रहता है। कहते हैं कि कुछ txt फ़ाइलों का एक HTTP फ़ोल्डर है। सभी फ़ाइलों को प्राप्त करने में सफल हो जाएगा। इस टिप्पणी के बाद मुझे इसे करने की कोशिश करें
श्रीकांत

@Srican HTTP में डायरेक्टरी की कोई अवधारणा नहीं है। पुनरावर्ती डाउनलोड का अर्थ है वेब पृष्ठों में लिंक (वेब ​​निर्देशिका ऐसा करता है , तो एक निर्देशिका लिस्टिंग दिखाने के लिए सर्वर द्वारा उत्पन्न वेब पेज सहित )।
गिल्स एसओ- बुराई को रोकें '

w ध्वज के साथ robots.txt की अनदेखी का समर्थन करता है -e robots=off। वैकल्पिक रूप से आप इसे अस्वीकार करके डाउनलोड करने से बच सकते हैं -R "robots.txt"
रयान क्रैज

17

इस मामले में, curlसबसे अच्छा उपकरण नहीं है। आप इस तरह wgetसे -rतर्क के साथ उपयोग कर सकते हैं :

wget -r http://example.com/ 

यह सबसे बुनियादी रूप है, और आप अतिरिक्त तर्कों का भी उपयोग कर सकते हैं। अधिक जानकारी के लिए, manpage( man wget) देखें ।


5

यह संभव नहीं है। कोई मानक नहीं है, आमतौर पर लागू किया जाता है, एक वेब सर्वर के लिए एक निर्देशिका की सामग्री को वापस करने का तरीका। अधिकांश सर्वर एक निर्देशिका का HTML सूचकांक उत्पन्न करते हैं, यदि ऐसा करने के लिए कॉन्फ़िगर किया गया है, लेकिन यह आउटपुट मानक नहीं है, और न ही किसी भी माध्यम से इसकी गारंटी है। आप इस HTML को पार्स कर सकते हैं, लेकिन ध्यान रखें कि प्रारूप सर्वर से सर्वर में बदल जाएगा, और हमेशा सक्षम नहीं होगा।


साइट सकर नाम के इस ऐप को देखें। sitesucker.us । वह यह कैसे करते हैं?
फू

वे HTML फ़ाइल को पार्स करते हैं और उसमें हर लिंक को डाउनलोड करते हैं।
ब्रैड

का उपयोग कर wgetया curl?
फू

7
@ ब्रैड: कर्ल HTML को पार्स नहीं करता है, लेकिन विकट ठीक यही करता है (इसे पुनरावर्ती रिट्रीवल कहा जाता है)।
गिल्स एसओ- बुराई को रोकना '

1
आह, मैं ठीक से खड़ा हूँ! gnu.org/software/wget/manual/html_node/… ओपी को पता होना चाहिए कि यह अभी भी वह नहीं मिल रहा है जो वह ढूंढ रहा है ... यह केवल उन लिंक्स का अनुसरण करता है जो वापस आए पृष्ठों पर उपलब्ध हैं।
ब्रैड

2

आप फ़ायरफ़ॉक्स एक्सटेंशन DownThemAll का उपयोग कर सकते हैं! यह आपको एक क्लिक में एक निर्देशिका में सभी फ़ाइलों को डाउनलोड करने देगा। यह अनुकूलन योग्य भी है और आप यह निर्दिष्ट कर सकते हैं कि किस प्रकार की फ़ाइल डाउनलोड करनी है। यह सबसे आसान तरीका है जो मैंने पाया है।


0

आपको यहां एक वेबसाइट रिपर के लिए उपयोग मिल सकता है, यह सब कुछ डाउनलोड करेगा और स्थानीय उपयोग के लिए सामग्री / आंतरिक लिंक को संशोधित करेगा। एक अच्छा यहाँ पाया जा सकता है: http://www.httrack.com

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.