कैसे एक सबरीडिट बैश का उपयोग करके विषयों की एक सूची को परिमार्जन करें

Mar 26, 2025
क्लाउड और इंटरनेट
फातमावती अचमद ज़ीनुरी / शटरस्टॉक डॉट कॉम

Reddit offers JSON feeds for each subreddit. Here’s how to create a Bash script that downloads and parses a list of posts from any subreddit you like. This is just one thing you can do with Reddit’s JSON feeds.

Installing Curl and JQ

We’re going to use कर्ल to fetch the JSON feed from Reddit and jq to parse the JSON data and extract the fields we want from the results. Install these two dependencies using apt-get on Ubuntu and other Debian-based Linux distributions. On other Linux distributions, use your distribution’s package management tool instead.

sudo apt-get install curl jq

Fetch Some JSON Data from Reddit

आइए देखें कि डेटा फ़ीड कैसा दिखता है। उपयोग कर्ल से नवीनतम पोस्ट लाने के लिए MildlyInteresting subreddit:

कर्ल-एस-ए "रेडिट स्क्रेपर उदाहरण" https://www.reddit.com/r/MildlyInteresting.json

ध्यान दें कि URL से पहले उपयोग किए जाने वाले विकल्प: -s कर्ल को मूक मोड में चलाने के लिए बाध्य करता है ताकि हम Reddit के सर्वर के डेटा को छोड़कर कोई आउटपुट न देखें। अगला विकल्प और पैरामीटर जो निम्न है, -एक "लाल खुरचनी उदाहरण" एक कस्टम उपयोगकर्ता एजेंट स्ट्रिंग सेट करता है जो Reddit को उनके डेटा तक पहुँचने वाली सेवा की पहचान करने में मदद करता है। Reddit API सर्वर उपयोगकर्ता एजेंट स्ट्रिंग के आधार पर दर सीमा लागू करता है। कस्टम वैल्यू सेट करने से Reddit हमारी कॉल लिमिट को दूसरे कॉलर्स से अलग कर देगा और मौका कम कर देगा कि हमें HTTP 429 रेट लिमिट एक्सेस्ड एरर मिलता है।

आउटपुट को टर्मिनल विंडो को भरना चाहिए और कुछ इस तरह देखना चाहिए:

आउटपुट डेटा में बहुत सारे फ़ील्ड हैं, लेकिन हम सभी रुचि रखते हैं शीर्षक, Permalink, और URL। आप Reddit के एपीआई प्रलेखन पृष्ठ पर प्रकारों और उनके क्षेत्रों की एक विस्तृत सूची देख सकते हैं: https://github.com/reddit-archive/reddit/wiki/JSON

Extracting Data from the JSON Output

We want to extract Title, Permalink, and URL, from the output data and save it to a tab-delimited file. We can use text processing tools like तथा तथा पकड़ , लेकिन हमारे पास हमारे निपटान में एक और उपकरण है जो JSON डेटा संरचनाओं को समझता है, जिन्हें कहा जाता है JQ . For our first attempt, let’s use it to pretty-print and color-code the output. We’ll use the same call as before, but this time, pipe the output through jq and instruct it to parse and print the JSON data.

कर्ल-एस-ए "रेडिट स्क्रैपर उदाहरण" https://www.reddit.com/r/MildlyInteresting.json | जक।

Note the period that follows the command. This expression simply parses the input and prints it as-is. The output looks nicely formatted and color-coded:

Let’s examine the structure of the JSON data we get back from Reddit. The root result is an object that contains two properties: kind and data. The latter holds a property called children , जिसमें इस सब्रेडिट के पदों की एक सरणी शामिल है।

सरणी में प्रत्येक आइटम एक ऑब्जेक्ट है जिसमें दो फ़ील्ड भी होते हैं जिन्हें तरह और डेटा कहा जाता है। जिन संपत्तियों को हम हथियाना चाहते हैं, वे डेटा ऑब्जेक्ट में हैं। JQ एक अभिव्यक्ति की अपेक्षा करता है जिसे इनपुट डेटा पर लागू किया जा सकता है और वांछित आउटपुट पैदा करता है। इसमें उनकी पदानुक्रम और सदस्यता के संदर्भ में सामग्री का वर्णन करना होगा, साथ ही साथ डेटा को कैसे रूपांतरित किया जाना चाहिए। चलो सही अभिव्यक्ति के साथ पूरे कमांड को फिर से चलाएं:

कर्ल-एस-ए "रेडिट स्क्रैपर उदाहरण" https://www.reddit.com/r/MildlyInteresting.json | jq q .data.children | [[] | .data.title, .data.url, .data.permalink '

आउटपुट प्रत्येक शीर्षक, URL और Permalink को अपनी लाइन पर दिखाता है:

चलो में गोता लगाएँ JQ कमांड जिसे हमने बुलाया:

jq q .data.children | [[] | .data.title, .data.url, .data.permalink '

दो पाइप प्रतीकों द्वारा अलग किए गए इस कमांड में तीन अभिव्यक्तियाँ हैं। प्रत्येक अभिव्यक्ति के परिणामों को आगे के मूल्यांकन के लिए अगले पास किया जाता है। पहली अभिव्यक्ति रेडिट लिस्टिंग के सरणी को छोड़कर सब कुछ फ़िल्टर करती है। यह आउटपुट दूसरी अभिव्यक्ति में डाला जाता है और एक सरणी में मजबूर किया जाता है। तीसरी अभिव्यक्ति सरणी में प्रत्येक तत्व पर कार्य करती है और तीन गुणों को निकालती है। के बारे में अधिक जानकारी JQ और इसकी अभिव्यक्ति वाक्यविन्यास में पाया जा सकता है jq का आधिकारिक मैनुअल .

एक स्क्रिप्ट में यह सब एक साथ लाना

आइए एपीआई कॉल और JSON पोस्ट-प्रोसेसिंग को एक स्क्रिप्ट में एक साथ रखें, जो हम चाहते हैं कि पोस्ट के साथ एक फ़ाइल उत्पन्न करेगा। हम केवल / r / MildlyInteresting ही नहीं, किसी भी सब्रेडिट से पोस्ट लाने के लिए समर्थन जोड़ेंगे।

अपना एडिटर खोलें और इस स्निपेट के कंटेंट को scrape-reddit.sh नामक फाइल में कॉपी करें

#! / Bin / bash

अगर [ -z "$1" ]
  फिर
    इको "कृपया एक सब्रेडिट निर्दिष्ट करें"
    बाहर निकलें 1
फाई

Subreddit = $ 1
अब = $ (दिनांक + "% m_% d_% y-% H_% M")
OUTPUT_FILE = "$ {SUBREDDIT}_ $ {NOW}.txt"

कर्ल-एस-ए "बाश-परिमार्जन-विषय" https://www.reddit.com/r/${SUBREDDIT}.json | \
        jq '.data.children | [[] | .data.title, .data.url, .data.permalink '| \
        जबकि पढ़ा -r शीर्षक; करना
                read -r URL
                read -r PERMALINK
                इको-ई "$ {TITLE} \ t $ {URL} \ t $ {PERMALINK}" | tr --delete \ ">> $ {OUTPUT_FILE}
        किया हुआ

यह स्क्रिप्ट पहले जांच करेगी कि उपयोगकर्ता ने एक सब्रेडिट नाम की आपूर्ति की है या नहीं। यदि नहीं, तो यह एक त्रुटि संदेश और एक गैर-शून्य रिटर्न कोड के साथ बाहर निकलता है।

इसके बाद, यह पहले तर्क को सब्रेडिट नाम के रूप में संग्रहित करेगा, और एक तारीख-मुद्रांकित फ़ाइल नाम का निर्माण करेगा जहां आउटपुट सहेजा जाएगा।

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

इससे पहले कि हम इस स्क्रिप्ट को निष्पादित कर सकें, हमें यह सुनिश्चित करना चाहिए कि इसे अनुमति दी गई है। उपयोग chmod इन अनुमतियों को फ़ाइल में लागू करने के लिए कमांड:

chmod u + x स्क्रेप-reddit.sh

और, अंत में, स्क्रिप्ट को एक सब्रेडिट नाम से निष्पादित करें:

./scrape-reddit.sh मिल्डली इन्टरस्टिंग

एक आउटपुट फ़ाइल एक ही निर्देशिका उत्पन्न होती है और इसकी सामग्री कुछ इस तरह दिखाई देगी:

प्रत्येक पंक्ति में तीन अक्षर होते हैं जिन्हें हम टैब वर्ण का उपयोग करके अलग करते हैं।

आगे बढ़ते हुए

Reddit दिलचस्प सामग्री और मीडिया की एक सोने की खान है, और यह JSON API का उपयोग करके आसानी से सभी तक पहुँचा जा सकता है। अब जब आपके पास इस डेटा तक पहुंचने और परिणामों को संसाधित करने का एक तरीका है, तो आप निम्न कार्य कर सकते हैं:

  • / R / WorldNews से नवीनतम सुर्खियों को पकड़ो और उन्हें अपने डेस्कटॉप का उपयोग करके भेजें सूचित-भेज
  • आपके सिस्टम के संदेश-द-द-डे में सर्वश्रेष्ठ चुटकुलों को / r / DadJokes से एकीकृत करें
  • आज / r / aww से सबसे अच्छी तस्वीर प्राप्त करें और इसे अपनी डेस्कटॉप पृष्ठभूमि बनाएं

यह सब उपलब्ध कराए गए डेटा और आपके सिस्टम पर आपके द्वारा उपयोग किए गए टूल के उपयोग से संभव है। हैप्पी हैकिंग!

.entry-सामग्री .entry-पाद लेख

Using Scrapy On Reddit.com


क्लाउड और इंटरनेट - सर्वाधिक लोकप्रिय लेख

Google डॉक्स में समीकरण संपादक का उपयोग कैसे करें

क्लाउड और इंटरनेट Dec 17, 2024

Google डॉक्स में समीकरण संपादक उन लोगों के लिए एकदम सही सुविधा है जो अपने �..


अमेज़ॅन पर बिक्री और मूल्य ड्रॉप कैसे ट्रैक करें

क्लाउड और इंटरनेट Jul 18, 2025

अमेज़ॅन अपने उत्पादों पर हर समय कीमतों को समायोजित करता है। यदि आपके ..


क्रोम और इंटरनेट एक्सप्लोरर इस छवि को पूरी तरह से अलग क्यों प्रदर्शित करते हैं?

क्लाउड और इंटरनेट Apr 17, 2025

उलझे हुए पहचान के मामले में, फलों के टुकड़े की एक तस्वीर अपने आप बदल जा�..


Google Chrome में आसानी से सभी टैब बंद करें

क्लाउड और इंटरनेट May 11, 2025

UNCACHED CONTENT क्या आप अपने आप को बहुत सारे टैब खोलते हुए देखते हैं लेकिन सभी को म�..


पीसी के लिए किंडल पर Mobi eBooks पढ़ें

क्लाउड और इंटरनेट Mar 22, 2025

क्या आप अपने पीसी को ईबुक रीडर के रूप में उपयोग करते हैं? पीसी के लिए किंडल..


वेबपेज लिंक और यूआरएल को फ़ायरफ़ॉक्स में फ़ाइलों के रूप में सहेजें

क्लाउड और इंटरनेट Feb 24, 2025

UNCACHED CONTENT क्या आप बुकमार्क के रूप में "अस्थायी रुचि / आवश्यकता" लिंक को सहेजन�..


हमारे पास 20 Google Wave आमंत्रण हैं। एक चाहता हूँ?

क्लाउड और इंटरनेट Jul 5, 2025

UNCACHED CONTENT Google Wave इन दिनों सभी गुस्से में है, शायद बड़े हिस्से में क्योंकि आपको ..


गूगल एनालिटिक्स में एक ट्रैफ़िक स्रोत के लिंक को कैसे देखें

क्लाउड और इंटरनेट Oct 25, 2025

तो आप अपने Google Analytics ट्रैफ़िक को देख रहे हैं और आप एक विशेष ट्रैफ़िक स्रोत से ..


श्रेणियाँ