Wget का उपयोग करना, वास्तविक HTML के बजाय gzipped version प्राप्त करने के लिए सही कमांड क्या है


18

मैं इस वेबसाइट पर ठोकर खाई, जो इस बारे में बात करती है।

तो जब gzipped version प्राप्त करके पूरी वेबसाइट को डाउनलोड करें, तो सही कमांड क्या है?

मैंने इस आदेश का परीक्षण कर लिया है, लेकिन मुझे नहीं पता कि क्या वास्तव में gzipped संस्करण प्राप्त करना भूल गया है:

wget --header="accept-encoding: gzip" -m -Dlinux.about.com -r -q -R gif,png,jpg,jpeg,GIF,PNG,JPG,JPEG,js,rss,xml,feed,.tar.gz,.zip,rar,.rar,.php,.txt -t 1 http://linux.about.com/

आप कहते हैं कि आपने उस आदेश का परीक्षण कर लिया है, लेकिन @ EightBitTony के उत्तर में यह कहा गया है कि आप इससे जो प्राप्त करेंगे वह अधिक फ़ाइलों के लिए साइट साइट के माध्यम से किसी भी पुनरावृत्ति के बिना पहली हिट की एक gzip फ़ाइल होगी। क्या वह परिणाम आपको मिला था?
कालेब

linux.about.com gzip- संपीड़ित है, और यह कमांड पूरी साइट को पुनः बनाता है। मैंने अन्य वेबसाइट पर इस कमांड का परीक्षण किया है और यह पूरी साइट को भी पुन: बनाता है। Thats क्यों मैं थोड़ा उलझन में है कि क्या यह वास्तव में gzipped संस्करण डाउनलोड करें या नहीं
jomnana

जवाबों:


19

यदि आप gzip'ed सामग्री का अनुरोध करते हैं (स्वीकार-एन्कोडिंग का उपयोग करें: gzip हैडर, जो सही है), तो यह मेरी समझ है कि wget तब सामग्री को नहीं पढ़ सकता है। तो आप डिस्क पर पहले पेज के लिए सिंगल, gzipped फ़ाइल के साथ समाप्त हो जाएंगे, लेकिन आपके पास कोई अन्य सामग्री नहीं होगी।

अर्थात आप gzipped सामग्री का अनुरोध करने के लिए और एक ही समय में पूरी साइट को पुनः प्राप्त करने के लिए wget का उपयोग नहीं कर सकते।

मुझे लगता है कि एक पैच है जो इस फ़ंक्शन का समर्थन करने की अनुमति देता है लेकिन यह डिफ़ॉल्ट वितरण संस्करण में नहीं है।

यदि आप -S ध्वज को शामिल करते हैं, तो आप बता सकते हैं कि वेब सर्वर सही प्रकार की सामग्री के साथ प्रतिक्रिया कर रहा है या नहीं। उदाहरण के लिए,

wget -S --header="accept-encoding: gzip" wordpress.com
--2011-06-17 16:06:46--  http://wordpress.com/
Resolving wordpress.com (wordpress.com)... 72.233.104.124, 74.200.247.60, 76.74.254.126
Connecting to wordpress.com (wordpress.com)|72.233.104.124|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 200 OK
  Server: nginx
  Date: Fri, 17 Jun 2011 15:06:47 GMT
  Content-Type: text/html; charset=UTF-8
  Connection: close
  Vary: Accept-Encoding
  Last-Modified: Fri, 17 Jun 2011 15:04:57 +0000
  Cache-Control: max-age=190, must-revalidate
  Vary: Cookie
  X-hacker: If you're reading this, you should visit automattic.com/jobs and apply to join the fun, mention this header.
  X-Pingback: http://wordpress.com/xmlrpc.php
  Link: <http://wp.me/1>; rel=shortlink
  X-nananana: Batcache
  Content-Encoding: gzip
Length: unspecified [text/html]

सामग्री एन्कोडिंग स्पष्ट रूप से gzip बताती है, हालांकि linux.about.com (वर्तमान में) के लिए,

wget -S --header="accept-encoding: gzip" linux.about.com
--2011-06-17 16:12:55--  http://linux.about.com/
Resolving linux.about.com (linux.about.com)... 207.241.148.80
Connecting to linux.about.com (linux.about.com)|207.241.148.80|:80... connected.
HTTP request sent, awaiting response...
  HTTP/1.1 200 OK
  Date: Fri, 17 Jun 2011 15:12:56 GMT
  Server: Apache
  Set-Cookie: TMog=B6HFCs2H20kA1I4N; domain=.about.com; path=/; expires=Sat, 22-Sep-12 14:19:35 GMT
  Set-Cookie: Mint=B6HFCs2H20kA1I4N; domain=.about.com; path=/
  Set-Cookie: zBT=1; domain=.about.com; path=/
  Vary: *
  PRAGMA: no-cache
  P3P: CP="IDC DSP COR DEVa TAIa OUR BUS UNI"
  Cache-Control: max-age=-3600
  Expires: Fri, 17 Jun 2011 14:12:56 GMT
  Connection: close
  Content-Type: text/html
Length: unspecified [text/html]

यह पाठ / html लौटा रहा है।

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


लेकिन मुझे फाइलों का गुच्छा मिला है, और एक भी gzipped फ़ाइल नहीं है ... या क्या मेरा wget संस्करण अलग है? (
उबुन्टु

यदि आप -S का उपयोग करते हैं, तो आप सर्वर से लौटाए गए हेडर देख सकते हैं, और जब आप linux.about.com के खिलाफ ऐसा करते हैं, तो आप स्पष्ट रूप से यह देख सकते हैं कि यह html लौटा रहा है, न कि gzip सामग्री। wget -S --header = "स्वीकार-एन्कोडिंग: gzip" linux.about.com सामग्री-प्रकार: पाठ / html
EightBitTony

क्योंकि सभी ब्राउज़र gzip एन्कोडिंग का समर्थन नहीं करते हैं (IE में प्रमुख समस्याएं हैं), कई वेबसाइटें प्रति ब्राउज़र के आधार पर केवल gzip एन्कोडिंग को सक्षम करती हैं और इसे wget करने के लिए परेशान नहीं करती हैं। शायद यह बताता है कि wux द्वारा पूछे जाने पर linux.about.com क्यों gzip नहीं करता है। लेकिन यह मुख्य मुद्दे को ठीक नहीं करता है कि (AFAIK) wget gzipped सामग्री को पुनः प्राप्त नहीं कर सकता है।
आठ बजकर

1
बस यह कोशिश की: अभी भी wget आउटपुट है Content-Type: text/html; charset=UTF-8, लेकिन वहाँ भी है Content-Encoding: gzip। यह पारदर्शी संपीड़न नहीं होगा यदि इसका उपयोग करने से MIME प्रकार की हर चीज को गज़ब करने के लिए मजबूर किया जाए ... मैं strace -s 128 wget ...वास्तव में सॉकेट से पढ़े गए कुछ बाइट्स / डिस्क पर लिखा हुआ देखने के लिए दौड़ा । वे गैर-एएससीआईआई हैं। इसलिए जब मुझे लगता है कि 2011 में आपके कमांड को एक gzipped version प्राप्त नहीं हुआ था, 2015 में उसी कमांड ने किया था। (wget 1.15)।
पीटर कॉर्डेस

मैं "-O -" करना पसंद पेज gunzip में पाइप stdout के लिए जा रहा है और फिर इसे सुनिश्चित करें कि यह ठीक से प्रदर्शित और छोटे है बनाने के लिए प्राप्त करने के लिए जब gzip और बड़ा के माध्यम से पहुंचाया और html नहीं जब gzip के माध्यम से पहुंचाया ...
nroose

0

HTML पेज पाने के लिए सरल कमांड और इसे संपीड़ित करें या कोई भी फ़ाइल प्राप्त करें और संपीड़ित करें।

$ wget -qO - <url> | gzip -c > file_name.gz

विकल्प के बारे में अधिक जानकारी के लिए। मैन कमांड का उपयोग करें।


2
ओपी चाहता है कि डेटा उनके ट्रांसफर (स्वीकार-एन्कोडिंग: gzip) के दौरान संकुचित हो, उसके बाद नहीं
xhienne
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.