शेल चर में वेबपृष्ठ की सामग्री कैसे प्राप्त करें?


115

लिनक्स में मैं एक URL कैसे ला सकता हूं और इसकी सामग्री शेल स्क्रिप्ट में एक चर में प्राप्त कर सकता हूं?

जवाबों:


189

आप wgetपृष्ठ को डाउनलोड करने के लिए कमांड का उपयोग कर सकते हैं और इसे एक चर में पढ़ सकते हैं:

content=$(wget google.com -q -O -)
echo $content

हम उस -Oविकल्प का उपयोग करते हैं wgetजो हमें फ़ाइल का नाम निर्दिष्ट करने की अनुमति देता है जिसमें wgetपेज की सामग्री को डंप किया जाता है। हम -मानक आउटपुट पर डंप प्राप्त करने और उसे वेरिएबल में इकट्ठा करने के लिए निर्दिष्ट करते हैं content। आप -qwget आउटपुट को बंद करने के लिए शांत विकल्प जोड़ सकते हैं ।

आप इस aswell के लिए कर्ल कमांड का उपयोग कर सकते हैं :

content=$(curl -L google.com)
echo $content

हमें -Lविकल्प का उपयोग करने की आवश्यकता है क्योंकि हम जिस पृष्ठ का अनुरोध कर रहे हैं वह स्थानांतरित हो सकता है। जिस स्थिति में हमें पृष्ठ को नए स्थान से प्राप्त करने की आवश्यकता है। -Lया --locationविकल्प हमें इस के साथ मदद करता है।


यह सचमुच साफ-सुथरी चाल है। मैं एक प्रॉक्सी सर्वर पर php स्क्रिप्ट के माध्यम से एक शेल स्क्रिप्ट का आह्वान करता हूं। पूछे जाने पर, प्रॉक्सी सर्वर महंगे सर्वर को चालू करता है जो 2 घंटे के बाद बंद हो जाता है। मुझे जेनकिंस कंसोल रिकॉर्ड को वापस खिलाने के लिए मानक आउटपुट के लिए wget से आउटपुट की आवश्यकता है।
डेनिस

मैं अभी तक यह पाने के लिए ... किसी को भी कैसे, उदाहरण के लिए के रूप में नष्ट कर सकता हूँ। इस लिंक www2.watchop.io/manga2/read/one-piece//3/ के लिए एक चर में एक img टैग प्राप्त करें ??
juggernauthk108

@ juggernaut1996: यह एक अलग प्रश्न होना चाहिए। संक्षेप में, आपको पृष्ठ को डाउनलोड करना होगा, srcसही तत्व की विशेषता को निकालना होगा , फिर उस पृष्ठ को डाउनलोड करना होगा । यदि आप tq स्थापित करते हैं , तो इस कमांड को यह करना चाहिए:curl -s http://ww1.watchop.io/manga2/read/one-piece/1/4 | tq -j -a src "#imgholder a img" | xargs wget
pyrocrasty

Wget 1.14 संस्करण विकल्प के convert_links = onसाथ स्वीकार नहीं कर रहा -O-है। यह त्रुटि के साथ विफल हो रहा है -k can be used together with -O only if outputting to a regular file.। क्या यह अपेक्षित है?
प्रसाद बुंतरु

28

कमांड लाइन से एक पेज प्राप्त करने के कई तरीके हैं ... लेकिन यह भी निर्भर करता है कि आप कोड स्रोत या पेज खुद चाहते हैं:

यदि आपको कोड स्रोत की आवश्यकता है:

कर्ल के साथ:

curl $url

wget के साथ:

wget -O - $url

लेकिन अगर आप एक ब्राउज़र के साथ जो कुछ देख सकते हैं वह प्राप्त करना चाहते हैं, तो lynx उपयोगी हो सकता है:

lynx -dump $url

मुझे लगता है कि आप इस छोटी सी समस्या के लिए बहुत सारे समाधान पा सकते हैं, हो सकता है कि आपको उन आदेशों के लिए सभी मैन पेज पढ़ना चाहिए। और $urlअपने URL से बदलना न भूलें :)

सौभाग्य :)




3

यदि आपके पास LWP स्थापित है, तो यह " GET " नाम का एक बाइनरी प्रदान करता है ।

$ GET http://example.com
<! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 संक्रमणकालीन // EN">
<Html>
<HEAD>
  <META http-equiv = "सामग्री-प्रकार" सामग्री = "पाठ / html; चारसेट = utf-8">
  <TITLE> उदाहरण वेब पेज </ TITLE>
</ Head> 
<Body>  
<p> आप इस वेब पेज पर पहुंच गए हैं & quot; example.com & quot;
& Quot; example.net & quot; & quot; & quot example.org
  या & quot; example.edu & quot; आपके वेब ब्राउज़र में। </ p>
<p> ये डोमेन नाम प्रलेखन में उपयोग के लिए आरक्षित हैं और उपलब्ध नहीं हैं 
  पंजीकरण कराना। <a href="http://www.rfc-editor.org/rfc/rfc2606.t.t+"> देखें
  2606 </a>, धारा 3। </ p>
</ Body>
</ HTML>

wget -O-, curlऔर lynx -sourceसमान व्यवहार करते हैं।


2

आप कच्चे डेटा का उपयोग कर सकते हैं curlया wgetउसे पुनः प्राप्त कर सकते हैं, या आप w3m -dumpकिसी वेब पेज का अच्छा टेक्स्ट प्रतिनिधित्व कर सकते हैं ।

$ foo=$(w3m -dump http://www.example.com/); echo $foo
You have reached this web page by typing "example.com", "example.net","example.org" or "example.edu" into your web browser. These domain names are reserved for use in documentation and are not available for registration. See RFC 2606, Section 3.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.