Wget के साथ एकल वेब पेज (पृष्ठभूमि छवियों के साथ) सहेजें


73

मैं संदर्भ के लिए एकल वेब पृष्ठों (पुनरावृत्ति नहीं, पूरी साइटें) को बचाने के लिए Wget का उपयोग करना चाहता हूं। फ़ायरफ़ॉक्स के "वेब पेज, पूर्ण" जैसे बहुत कुछ।

मेरी पहली समस्या यह है: मैं CSS में निर्दिष्ट पृष्ठभूमि छवियों को बचाने के लिए Wget प्राप्त नहीं कर सकता। यहां तक ​​कि अगर यह पृष्ठभूमि छवि फ़ाइलों को बचाने के लिए मुझे नहीं लगता है --convert- लिंक स्थानीय स्तर पर सहेजे गए पृष्ठभूमि छवियों को इंगित करने के लिए CSS फ़ाइल में पृष्ठभूमि छवि URL परिवर्तित करेगा। फ़ायरफ़ॉक्स में भी यही समस्या है।

मेरी दूसरी समस्या यह है: यदि उस पृष्ठ पर चित्र हैं जिन्हें मैं सहेजना चाहता हूं जो किसी अन्य सर्वर (जैसे विज्ञापन) पर होस्ट किए गए हों तो ये अभ्यस्त शामिल नहीं होंगे। -स्पैन-होस्ट नीचे दी गई लाइन के साथ उस समस्या को हल करने के लिए प्रतीत नहीं होता है।

मैं उपयोग कर रहा हूँ: wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off http://domain.tld/webpage.html


1
वास्तव में एक ही पंक्ति (wget --no-parent --timestamping --convert-links --page-requisites --no-directory --no-host-directory -erobots = off domain.tld) ​​वास्तव में पृष्ठभूमि की छवियों को संदर्भित से बचाता है 1.12 अपडेट करने के बाद CSS। मैनुअल कहता है: "http urls के साथ, Wget पुनः प्राप्त html और css को दिए गए url से प्राप्त करता है, जिस दस्तावेज़ को संदर्भित करता है, उसे href या src जैसे मार्कअप या 'url ()' फंक्शनल 'का उपयोग करके निर्दिष्ट css uri मानों से प्राप्त करता है। अंकन। " दूसरी समस्या अभी भी हल करने की आवश्यकता है
user14124

जवाबों:


106

से Wget आदमी पेज :

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

wget -E -H -k -K -p http://www.example.com/

इसके अलावा मामले robots.txtमें आप जोड़ रहा है-e robots=off


ऐसा लगता है कि यह सिर्फ js और css को पूर्ण रूपेण फिर से लिखना है
ग्रेग डीन

1
कोई बात नहीं, यह robots.txt मुझे वैकल्पिक हल के साथ जवाब को अद्यतन अनुमति न देने गया था
ग्रेग डीन

19
विस्तारित:wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites [url]
सैम

4
या बेहतर अभी तक wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows[url]
पेटाह

@ {etah: मैंने आपके तर्क के साथ आपकी आज्ञा की कोशिश की, यह अन्य वेबपेजों को डाउनलोड करेगा, इसके अलावा एक निर्दिष्ट।
टिम

7

wgetआदेश विकल्प प्रदान करता है --mirror, जो के रूप में एक ही बात करता है:

$ wget -r -N -l inf --no-remove-listing

आप -xहोस्टनाम सहित साइट के लिए एक पूरी निर्देशिका पदानुक्रम बनाने के लिए भी फेंक सकते हैं ।

यदि आप wgetहालांकि नवीनतम संस्करण का उपयोग नहीं कर रहे हैं तो आप इसे नहीं पा सकते हैं ।


1
यह संभवतः पूरी वेबसाइट को अपने उप-यूआरएल के साथ क्रॉल करेगा
4253wyerg4e

2

ऐसा लगता है कि wgetऔर फ़ायरफ़ॉक्स उन फ़ाइलों को डाउनलोड में शामिल करने के लिए सीएसएस को पार्स नहीं कर रहे हैं। आप उन सीमाओं के इर्द-गिर्द काम कर सकते हैं, जो आप भूल सकते हैं, और आपके द्वारा डाउनलोड की गई फ़ाइलों की सूची तैयार करने के लिए डाउनलोड की गई फ़ाइलों में किसी भी CSS या जावास्क्रिप्ट से लिंक निष्कर्षण को स्क्रिप्ट कर सकते हैं। फिर wgetलिंक की उस सूची पर एक दूसरा रन जो कुछ भी छूट गया था ( -iझंडे का उपयोग एक फ़ाइल लिस्टिंग URL निर्दिष्ट करने के लिए) कर सकता है।

यदि आपको पर्ल पसंद है, तो CPAN पर CSS :: Parser मॉड्यूल है जो आपको इस फैशन में लिंक निकालने का एक आसान साधन दे सकता है।

ध्यान दें कि wgetकेवल कुछ HTML मार्कअप ( href/ src) और सीएसएस यूरिस ( url()) को निर्धारित करने के लिए आवश्यक है कि किस पृष्ठ को प्राप्त करना है। आप यह जानने के लिए डोम इंस्पेक्टर या फायरबग जैसे फ़ायरफ़ॉक्स ऐडऑन्स का उपयोग करने की कोशिश कर सकते हैं यदि आपको जो 3-पार्टी इमेज मिल रही हैं, उन्हें जावास्क्रिप्ट के माध्यम से नहीं जोड़ा जा रहा है - यदि हां, तो आपको उन्हें प्राप्त करने के लिए स्क्रिप्ट या फ़ायरफ़ॉक्स प्लगइन का सहारा लेना होगा। भी।


जैसा कि मैंने अपनी पहली पोस्ट के लिए टिप्पणी में कहा था कि ऐसा लगता है कि यह v1.12 में तय किया गया है। मैं अभी भी नहीं जानता कि कैसे अन्य सर्वर पर हैं कि छवियों को शामिल करने के लिए।
user14124

हां, सीएसएस को पार्स wget v1.12 में नया है, इसलिए बदलाव का के शीर्ष पर है: freshmeat.net/urls/376000c9c7a02f7a3592180c2390ff04
नीम हकीम क्विक्सोट

विकल्प -H को सूची में जोड़ने का प्रयास करें। यह --span-मेजबान के लिए खड़ा है और बाहरी मेजबानों से सामग्री डाउनलोड करने की अनुमति देता है।
माइकल

2

मैंने एक समान उद्देश्य के लिए वेबोग्राफ़ी बनाई: https://webjay.github.io/webtography/

यह Wget का उपयोग करता है और साइट को आपके GitHub खाते पर एक भंडार में धकेलता है।

मैं इन तर्कों का उपयोग करता हूं:

--user-agent=Webtography
--no-cookies
--timestamping
--recursive
--level=1
--convert-links
--no-parent
--page-requisites
--adjust-extension
--max-redirect=0
--exclude-directories=blog

https://github.com/webjay/webtography/blob/master/lib/wget.js#L15-L26

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