आप WGET का उपयोग कैसे करते हैं साइट 1 स्तर को गहरा करने के लिए, जेएस को पुनर्प्राप्त करना, सीएसएस छवियों सहित सीएसएस संसाधन?


10

प्रेटेंड मैं चाहता था कि स्थायी रखने के लिए एक साधारण पेज कॉपी मेरे एचडी में डाउनलोड की जाए। मैं एक गहरी पुनरावर्ती की तलाश में नहीं हूं, सिर्फ एक पृष्ठ, लेकिन उस पृष्ठ द्वारा लोड किए गए किसी भी संसाधन को भी डाउनलोड किया जाना है।

उदाहरण: https://www.tumblr.com/

अपेक्षा:

  • सूचकांक। Html
  • कोई भरी हुई छवियाँ
  • कोई भरी हुई जेएस फाइलें
  • किसी भी लोड सीएसएस फ़ाइलें
  • CSS फ़ाइल में लोड की गई कोई भी छवि
  • डाउनलोड की गई प्रतियों के साथ काम करने के लिए स्थानीयकृत संसाधनों के लिंक (कोई वेब निर्भरता नहीं)

मुझे यह जानने में दिलचस्पी है कि क्या आप मुझे सबसे अच्छा wget सिंटैक्स या अन्य टूल ढूंढने में मदद कर सकते हैं जो ऐसा करेगा। मेरे द्वारा आजमाए गए उपकरण आमतौर पर CSS द्वारा लोड की गई छवियों को प्राप्त करने में विफल रहते हैं, इसलिए स्थानीय रूप से लोड किए जाने पर पृष्ठ कभी भी सही नहीं दिखता है। धन्यवाद!

स्पर्शरेखा समाधान

मुझे फ़ायरफ़ॉक्स का उपयोग करके ऐसा करने का एक तरीका मिला। डिफ़ॉल्ट सेव टूट गया है और एक ऐडऑन है जिसे "सेव कम्प्लीट" कहा जाता है जो जाहिर तौर पर इसके साथ अच्छा काम कर सकता है। हालाँकि, आप इसे डाउनलोड नहीं कर सकते क्योंकि यह कहता है कि यह वर्तमान फ़ायरफ़ॉक्स संस्करण में समर्थित नहीं है। कारण यह है कि इसे इस ऐडऑन में रोल किया गया था: "मोज़िला आर्काइव फॉर्मेट"। इसे स्थापित करें, फिर जब आप फ़ाइल का उपयोग करें "सेव पेज अस .." "वेब पेज, पूर्ण" नामक एक नया विकल्प होता है, जो अनिवार्य रूप से पुराना एडऑन है, जो स्टॉक कार्यान्वयन फायरफॉक्स उपयोग (जो कि भयानक है) को ठीक करता है। यह एक WGET समाधान नहीं है, लेकिन यह एक व्यावहारिक समाधान प्रदान करता है।

EDIT: भविष्य में इस प्रश्न का अनुसरण करने वाले किसी भी व्यक्ति के लिए एक और हास्यास्पद मुद्दा, ऐसा करने की कोशिश करना। Addon को ठीक से काम करने के लिए आपको टूल> मोज़िला आर्काइव फॉर्मेट की आवश्यकता है और "कम्प्लीट सेव का उपयोग करके स्क्रिप्ट्स और सोर्स को संरक्षित करने के लिए" पृष्ठ का एक वफादार स्नैपशॉट लें "की भयानक (डिफ़ॉल्ट) सेटिंग को बदल दें, अन्यथा एडऑन सभी खाली हो जाएगा आपकी स्क्रिप्ट फ़ाइलें और उन्हें टेक्स्ट के साथ प्रतिस्थापित करें "/ * स्नैपशॉट सेव * /" द्वारा हटाए गए स्क्रिप्ट।


फ़ाइल> फ़ायरफ़ॉक्स या अन्य ब्राउज़र पर के रूप में सहेजें सभी छवियों, जेएस और सीएसएस फ़ाइलों को डाउनलोड करेगा
उपयोगकर्ता 31113

क्या आप वास्तव में फाइलें चाहते हैं, या क्या आप पृष्ठ का सही ढंग से प्रदान किया गया संस्करण चाहते हैं?

मुझे फाइलें चाहिए, उन्हें पेज को सही ढंग से प्रस्तुत करने की आवश्यकता होगी। यदि आपके पास नहीं है, तो यह अलग दिखाई देगा। फ़ाइल> इस रूप में सहेजें फ़ायरफ़ॉक्स में काम नहीं करता है। यदि आप ऐसा करते हैं, तो आपको css चित्र नहीं मिलते हैं। इसे tumblr.com/login पर देखें । बैकग्राउंड इमेज मिसिंग, इनपुट फील्ड्स के लिए bg इमेज मिसिंग।

मेरे लिए कोई भी समाधान काम नहीं किया। इस तरह की साइट की बचत को प्राप्त करने के लिए मेरा स्पर्शरेखा समाधान सबसे अच्छा तरीका है। हालाँकि, मैंने इसे Apple.com जैसे बहुत ही जटिल पृष्ठों पर विफल देखा है , संभवतया क्योंकि बहुत सारे संसाधन पथ गतिशील रूप से जावास्क्रिप्ट निष्पादित करके उत्पन्न होते हैं, कुछ अभी नहीं बल्कि कुछ प्रकार के अजाक्स निष्पादन के दौरान।
लाना मिलर

जवाबों:


11

wget -p -k http://ExampleSite.com

-P आपको साइट को सही ढंग से देखने के लिए सभी आवश्यक तत्व मिल जाएगा (सीएसएस, चित्र, आदि)। -K आपको ऑनलाइन दिखाई देने वाले पेज को ऑफलाइन देखने की अनुमति देने के लिए सभी लिंक (सीएसएस और चित्रों के लिए शामिल करने के लिए) को बदल देगा।

अपडेट: यह आपके उदाहरण साइट के लिए विशिष्ट है: tumblr.com

wget -H -N -k -p --exclude-domains quantserve.com --no-check-certificate -U "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0a2) Gecko/20110613 Firefox/6.0a2" https://www.tumblr.com

विभाजन:

-H = किसी विदेशी होस्ट की अवधि के लिए जाने की अनुमति देता है। आवश्यक है क्योंकि एक ही पते पर सामने वाले पृष्ठ पर tumblr की अपनी छवियां नहीं हैं, वे Secure.assets.tumblr.com का उपयोग कर रहे हैं डोमेन को छोड़कर नोट देखें

-N = केवल उन फ़ाइलों को लेगा जो नए हैं जो वर्तमान में आपके पास हैं, यदि आप समय के साथ फिर से उसी पृष्ठ को डाउनलोड कर रहे हैं

-k = अपने लिंक को ठीक से ऑफ़लाइन देखने के लिए परिवर्तित करें

-पी = सभी आवश्यक तत्वों को सही ढंग से देखने के लिए पकड़ लेता है (सीएसएस, चित्र, आदि)

--exclude- डोमेन = चूंकि tumblr.com होमपेज में quanterve.com के लिए एक लिंक है और मुझे लगता है कि आप इस सामान को नहीं चाहते हैं, आपको इसे अपने डाउनलोड से बाहर करने की आवश्यकता है। नोट : यह एक बहुत महत्वपूर्ण है जिसे आपको -H के साथ उपयोग करना चाहिए क्योंकि यदि आप किसी साइट पर जाते हैं और उनके पास बाहर के होस्ट (विज्ञापनदाताओं और एनालिटिक्स सामान) के लिए कई लिंक हैं, तो आप उस सामान को भी हथियाने जा रहे हैं!

- tumblr https का उपयोग करने के बाद से चेक-सर्टिफिकेट की आवश्यकता नहीं है

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

अंत में आपके पास साइट है: https://www.tumblr.com


1
मैंने यह कोशिश की, कोई जेएस या सीएसएस या छवि फ़ाइलें नहीं मिलीं। क्या तुमने किया?

यदि आप इसे tumblr (ऊपर दिए गए उदाहरण) पर उपयोग कर रहे हैं, तो आपको --no-check-certificate निर्दिष्ट करना पड़ सकता है।

मुझे लगता है कि आप सही हैं, शायद इसे उस विकल्प की आवश्यकता है। फिर भी index.html के अलावा कुछ भी नहीं है। कुछ याद आ रही है ...

@ LanaMiller मैंने अपना उत्तर अपडेट किया। अगर कोई समस्या हो तो मुझे बताएं।

क्या आप कुछ ऐसा नहीं कर सकते हैं -exclude-डोमेन! = Tumblr.com?
अल्फा 1

3

आपके द्वारा बताई गई विशिष्ट साइट के लिए और कई अन्य लोगों को कोडित किया गया है जैसे यह (और कर्ल) सिर्फ काम नहीं करेगा। मुद्दा यह है कि पेज को एक ब्राउज़र में रेंडर करने के लिए आवश्यक कुछ एसेट लिंक स्वयं जावास्क्रिप्ट के माध्यम से बनाए जाते हैं। जावास्क्रिप्ट को चलाने के लिए Wget के पास एक सुविधा अनुरोध लंबित है:

http://wget.addictivecode.org/FeatureSpecifications/JavaScript

हालाँकि, जब तक कि वे पूरी साइटें नहीं हैं जो जावास्क्रिप्ट का उपयोग करके एसेट लिंक बनाती हैं, वेगेट का उपयोग करके क्लोन करने योग्य नहीं होंगे। सबसे आसान समाधान एक उपकरण ढूंढना है जो वास्तव में एक डोम का निर्माण कर रहा है और एक ब्राउज़र इंजन (जैसे आपके द्वारा उल्लेखित फ़ायरफ़ॉक्स विधि) की तरह जावास्क्रिप्ट को पार्स कर रहा है।


1

आप इसे स्वचालित रूप से भी कर सकते हैं (या प्रोग्रामिक रूप से यदि आप कोडिंग करते हैं) तो wget का उपयोग करके शेल के माध्यम से एक कमांड जारी कर सकते हैं:

wget --convert-links -r http://www.yourdomain.com

यह पृष्ठ और आंतरिक फ़ाइलों को डाउनलोड करेगा और लिंक को स्थानीय बना देगा।


1
यह सब कुछ मिलेगा । प्रश्न पढ़ें।
evgeny

-1
wget -r http://www.example.com

मुझे लगता है कि सब कुछ हड़प जाएगा, लेकिन इसे एक शॉट दें और पता करें।


1
यह सब कुछ हो जाता है जो बहुत ज्यादा है। अब तक मैंने पाया फ़ायरफ़ॉक्स समाधान सबसे अच्छा काम कर समाधान है। यह आप की जरूरत है और अधिक कुछ नहीं हो जाता है।

-1

$ ( आदमी wget ):

-p

--page आवश्यक वस्तुएँ

यह विकल्प Wget को उन सभी फ़ाइलों को डाउनलोड करने का कारण बनता है जो किसी दिए गए HTML पृष्ठ को ठीक से प्रदर्शित करने के लिए आवश्यक हैं। इसमें ऐसी चीजें शामिल हैं जैसे कि अंतर्निर्मित छवियां, ध्वनियां और संदर्भित स्टाइलशीट।

आमतौर पर, एक एकल HTML पृष्ठ को डाउनलोड करते समय, किसी भी अपेक्षित दस्तावेज को इसे ठीक से प्रदर्शित करने के लिए आवश्यक हो सकता है डाउनलोड नहीं किया गया है। -L के साथ -r का उपयोग करने से मदद मिल सकती है, लेकिन चूंकि Wget बाहरी और अंतर्निर्मित दस्तावेजों के बीच सामान्य रूप से अंतर नहीं करता है, इसलिए आमतौर पर '' पत्ते के दस्तावेज '' के साथ छोड़ दिया जाता है जो उनकी आवश्यकता को याद कर रहे हैं।

उदाहरण के लिए, दस्तावेज़ 1.html में "<IMG>" टैग सन्दर्भ 1.gif और "<A>" टैग शामिल है जो बाहरी दस्तावेज़ 2.html की ओर इशारा करता है। यह कहें कि 2.html समान है लेकिन इसकी छवि 2.gif है और यह 3.html से लिंक करता है। यह कहें कि यह कुछ मनमाने ढंग से उच्च संख्या तक जारी है।

यदि कोई कमांड निष्पादित करता है:

wget -r -l 2 http: // <site> /1.html

इसके बाद 1.html, 1.gif, 2.html, 2.gif, और 3.html डाउनलोड किया जाएगा। जैसा कि आप देख सकते हैं, 3. html बिना इसकी आवश्यकता के है। हालाँकि, इस आदेश के साथ:

wget -r -l 2 -p http: // <site> /1.html

उपरोक्त सभी फाइलें और 3. html की अपेक्षित 3.gif डाउनलोड की जाएगी। इसी तरह,

wget -r -l 1 -p http: // <site> /1.html

डाउनलोड करने के लिए 1.html, 1.gif, 2.html और 2.gif का कारण होगा। कोई सोच सकता है कि:

wget -r -l 0 -p http: // <site> /1.html

सिर्फ 1.html और 1.gif डाउनलोड करेगा, लेकिन दुर्भाग्य से ऐसा नहीं है, क्योंकि -l 0, -l inf के बराबर है --- यानी, अनंत पुनरावृत्ति। एक एकल HTML पृष्ठ (या उनमें से एक मुट्ठी भर, सभी को कमांड-लाइन या एक-इन URL इनपुट फ़ाइल में निर्दिष्ट करने के लिए) और उसके (या उनके) अपेक्षित डाउनलोड करने के लिए, बस ऑफ-आर और-एल छोड़ दें:

wget -p http: // <site> /1.html

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

wget -E -H -k -K -K -p http: // <site> / <document & gt ;

इस विषय को समाप्त करने के लिए, यह जानना योग्य है कि Wget के बाहरी दस्तावेज़ लिंक का विचार "<A>" टैग, "<AREA>" टैग, या "<LINK>" के अलावा अन्य टैग में निर्दिष्ट कोई URL है < लिंक REL = "स्टाइलशीट"> "।


2
आपको लगता है कि इसका कौन सा हिस्सा समाधान जैसा दिखता है? क्योंकि मैंने मैन पेज की सामग्री को पढ़ने की कोशिश की है और मुझे यहाँ सही समाधान नहीं दिख रहा है। क्या आपने खुद इसमें से कोई कोशिश की? आपको क्या लगता है कि कमांड विशेष रूप से प्रश्न को संबोधित करता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.