Html के बिना wget का उपयोग करके पृष्ठ का पाठ कैसे प्राप्त करें?


17

अगर मैं किसी वेबपेज पर wget करने की कोशिश करता हूं, तो मुझे html के रूप में पेज मिल रहा है। क्या संबंधित html के बिना किसी फ़ाइल का केवल पाठ पुनर्प्राप्त करना संभव है? (यह मेरे लिए आवश्यक है क्योंकि HTML पृष्ठों में से कुछ में c प्रोग्राम HTML टैग्स के साथ डाउनलोड हो रहा है। मुझे इसे ब्राउज़र में खोलना है और मैन्युअल रूप से .c फ़ाइल बनाने के लिए पाठ की प्रतिलिपि बनाना है।)


1
वास्तव में यह संभव है, लेकिन आपको कुछ फ़ंक्शन लिखना होगा जो पृष्ठ से कोड को पार्स करेगा और इसे इस रूप में बचाएगा .c। यह कठिन नहीं है, लेकिन यह पृष्ठ संरचना पर निर्भर करता है। यदि आप एक लिंक प्रदान करते हैं तो कोई व्यक्ति सटीक कोड के साथ आपकी सहायता करेगा। अन्यथा sedया perlआपके मित्र हैं।
भीड़

जवाबों:


26

wgetकेवल दस्तावेज़ को पुनः प्राप्त करेगा। यदि दस्तावेज़ HTML में है, तो आप जो चाहते हैं वह दस्तावेज़ को पार्स करने का परिणाम है।

आप उदाहरण के लिए, उपयोग कर सकते हैं lynx -dump -nolist, यदि आपके पास लिनेक्स है।

lynxएक हल्का, सरल वेब ब्राउज़र है, जिसमें -dumpसुविधा है, जिसका उपयोग पार्सिंग प्रक्रिया के परिणाम को उत्पन्न करने के लिए किया जाता है। -nolistअंत में लिंक की सूची से बचा जाता है, जो दिखाई देगा कि क्या पृष्ठ में कोई हाइपरलिंक है।

जैसा कि @Thor द्वारा उल्लेख किया गया है, elinksइसके लिए भी उपयोग किया जा सकता है, क्योंकि इसमें एक -dumpविकल्प भी है (और -no-referencesलिंक की सूची को छोड़ना होगा)। यह विशेष रूप से उपयोगी हो सकता है यदि आप -sigh- फ्रेम (MTFBWY) का उपयोग करके किसी साइट पर चलते हैं।

यह भी ध्यान रखें कि, जब तक कि पृष्ठ वास्तव में HTML टैग के साथ केवल सी कोड नहीं है, आपको परिणाम की जांच करने की आवश्यकता होगी, बस यह सुनिश्चित करने के लिए कि वहां सी कोड से अधिक कुछ नहीं है।


6

यदि आपके पास ये अन्य उपकरण स्थापित नहीं हैं, केवल wget है, और पृष्ठ में केवल सादे पाठ और लिंक, जैसे स्रोत कोड या फ़ाइलों की सूची का कोई स्वरूपण नहीं है, तो आप HTML का उपयोग इस तरह से sed कर सकते हैं:

wget -qO- http://address/of/page/you/want/to/view/ | sed -e 's/<[^>]*>//g'

यह पेज के स्रोत को STDOUT को डंप करने और किसी भी <> जोड़े और उनके बीच कुछ भी छीनने के लिए sed का उपयोग करता है।

फिर आप उस कमांड के आउटपुट को रीडायरेक्ट कर सकते हैं जिस फाइल का आप उपयोग करना चाहते हैं>:

wget -qO- http://.../ | sed -e 's/<[^>]*>//g' > downloaded_file.txt

NB: आप पा सकते हैं कि इसमें फ़ाइल में अतिरिक्त व्हाट्सएप है जो आप नहीं चाहते हैं (उदाहरण के लिए लाइनों को कुछ कॉलमों के लिए इंडेंट किया गया है)

फ़ाइल को साफ करने के लिए अपने पाठ संपादक का उपयोग करना सबसे आसान हो सकता है (या एक स्रोत फ़ॉर्मेटर जैसा कि आप सी स्रोत कोड डाउनलोड कर रहे हैं)।

यदि आपको फ़ाइल की प्रत्येक पंक्ति में एक ही सरल कार्य करने की आवश्यकता है, तो आप ऐसा करने के लिए एक कमांड शामिल कर सकते हैं जो कि sed कमांड में है (यहां एक अग्रणी स्थान को अलग करना):

wget -qO- http://.../ | sed -e 's/<[^>]*>//g;s/^ //g' > downloaded_stripped_file.txt

3

बस एक और उपकरण जोड़ने के लिए। मैं पसंद करता हूं w3m, जो एक lynxकंसोल ब्राउज़र की तरह है। आप अपने सिस्टम पर पहले से उपलब्ध व्हाट्सएप की जांच कर सकते हैं।

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