पाइथन अनुरोध पुस्तकालय क्या है? व्यावहारिक HTTP गाइड

पाइथन अनुरोध पुस्तकालय क्या है?

Scrapeless Universal Scraping API को पाइथन अनुरोध पुस्तकालय से कॉल किया जा सकता है जब किसी कार्यप्रवाह को प्रबंधित अधिग्रहण या चित्रित पृष्ठ आउटपुट की आवश्यकता होती है।

टीडी;LR

  • अनुरोध पाइथन के लिए एक तृतीय-पक्ष HTTP क्लाइंट है। यह HTTP विधियों को भेजता है, पैरामीटर और बॉडी को एन्कोड करता है, कुकीज़ और सत्रों को संभालता है, और प्रतिक्रिया स्थिति, हेडर, पाठ, बाइट्स और JSON को उजागर करता है।
  • अनुरोध एक HTML पार्सर या ब्राउज़र नहीं है। यह सर्वर प्रतिक्रियाएँ प्राप्त करता है लेकिन DOM का क्वेरी नहीं करता है या क्लाइंट-साइड जावास्क्रिप्ट को निष्पादित नहीं करता है।
  • सभी कॉल पर समय सीमाएँ स्पष्ट होनी चाहिए। एक उत्पादन कार्यकर्ता को एक ज्ञात कनेक्शन और पढ़ने की सीमा की आवश्यकता होती है, न कि अनियंत्रित प्रतीक्षा।
  • सत्र कुकीज़ को बनाए रखते हैं और कनेक्शन को पुनः उपयोग करते हैं। एक सत्र अनुरोधों के संबंधित अनुक्रम के लिए उपयोगी होता है और इसे अन يتعلق पहचान या कार्यों के बीच साझा नहीं किया जाना चाहिए।
  • प्रतिक्रिया सत्यापन को अधिक की आवश्यकता होती है raise_for_status. गलत पृष्ठ एक सफल स्थिति के साथ आ सकता है, इसलिए अंतिम URL, सामग्री प्रकार और पहचान मार्करों की जांच करें।

अनुरोध पाइथन का उच्च-स्तरीय HTTP क्लाइंट है

पाइथन अनुरोध पुस्तकालय HTTP अनुरोध भेजने और प्रतिक्रियाएँ पढ़ने के लिए एक संक्षिप्त इंटरफेस प्रदान करता है। यह सामान्य विधियों, क्वेरी पैरामीटर, फॉर्म और JSON बॉडी, हेडर, कुकीज़, प्रमाणीकरण, प्रॉक्सी, स्ट्रीमिंग, TLS सत्यापन, पुनर्निर्देश और सत्रों का समर्थन करता है। यह पाइथन के मानक पुस्तकालय से अलग से स्थापित है।

यह आधिकारिक अनुरोध दस्तावेज़ीकरण पुस्तकालय को एक HTTP इंटरफ़ेस के रूप में वर्णित करता है और कनेक्शन पूलिंग, कुकी स्थिरता, स्वचालित डिकोडिंग, प्रॉक्सी समर्थन, स्ट्रीमिंग डाउनलोड, और समय सीमाएँ जैसी विशेषताओं को सूचीबद्ध करता है। ये विशेषताएँ परिवहन चिंताओं का समाधान करती हैं; वे एप्लिकेशन-विशिष्ट HTML को पार्स नहीं करती हैं।

एक उपयोगी मानसिक मॉडल है अनुरोध अंदर, प्रतिक्रिया बाहर। आप लक्ष्य URL, विधि, हेडर और बॉडी बनाते हैं। अनुरोध उन्हें भेजता है और एक Responseवापसी करता है। फिर आवेदन कोड यह तय करता है कि प्रतिक्रिया स्वीकार्य है या नहीं और क्या पाठ, बाइट्स, या JSON को पार्स करना चाहिए।

प्रतिक्रिया वस्तु क्या शामिल करती है

एक प्रतिक्रिया उजागर करती है status_code, हेडर, अंतिम url, पुनर्निर्देश इतिहास, डिकोड किया हुआ text, कच्चा content बाइट्स, और एक json() सहायक। अनुरोध त्वरित आरंभ भी सिफारिश करता है raise_for_status() जब असफल HTTP स्थिति को अपवाद में बदलना चाहिए।

प्रतिक्रिया संपत्तिअर्थसामान्य सावधानी
status_codeHTTP प्रतिक्रिया स्थितिसफलता पृष्ठ पहचान को साबित नहीं करती है
headersप्रतिक्रिया मेटाडेटाघोषित सामग्री प्रकार अभी भी गलत हो सकता है
textडिकोड की गई प्रतिक्रिया पाठएन्कोडिंग विकल्प वर्णों को प्रभावित करता है
contentकच्चे प्रतिक्रिया बाइट्सबड़े बॉडी को स्ट्रीमिंग या सीमाओं की आवश्यकता होती है
json()एक JSON बॉडी को डिकोड करेंमान्य JSON एक त्रुटि स्थिति के साथ हो सकता है
urlअंतिम प्रतिक्रिया URLपुनर्निर्देशन एक अनियोजित पृष्ठ पर ले जा सकते हैं

कॉल करना json() सिर्फ यह साबित करता है कि शरीर को JSON के रूप में डिकोड किया जा सकता है। यह एक असफल प्रतिक्रिया को सफल नहीं बनाता है। मान स्वीकार करने से पहले स्थिति और अपेक्षित प्रतिक्रिया स्कीमा की जांच करें।

बाउंडेड अनुरोध भेजें

वर्तमान कार्यक्षेत्र में अनुरोध मौजूद हैं, इसलिए इस पैटर्न को आयात और निष्पादित किया जा सकता है। उदाहरण स्पष्ट समय सीमाएँ, स्थिति जांच, सामग्री प्रकार निरीक्षण, और किसी भी पार्सर को शरीर प्राप्त करने से पहले एक पृष्ठ पहचान मार्कर दिखाता है।

import requests

with requests.Session() as session:
    session.headers.update({
        "Accept": "text/html,application/xhtml+xml",
        "User-Agent": "ExampleResearchClient/1.0",
    })

    response = session.get(
        "https://example.com/",
        timeout=(10, 20),
        allow_redirects=True,
    )
    response.raise_for_status()

    content_type = response.headers.get("content-type", "")
    if "text/html" not in content_type.lower():
        raise ValueError("expected an HTML response")

    if "Example Domain" not in response.text:
        raise ValueError("expected page identity is missing")

    print({
        "final_url": response.url,
        "status": response.status_code,
        "characters": len(response.text),
    })

समय सीमा ट्यूपल कनेक्शन समय को प्राप्त बाइट्स के बीच अधिकतम प्रतीक्षा से अलग करता है। प्रत्येक कॉल को कार्यभार से जुड़े स्पष्ट मूल्य दें। जब एक अनुरोध अनिश्चितकाल तक प्रतीक्षा कर सकता है, तो एक शेड्यूलर क्षमता का प्रबंधन नहीं कर सकता।

संबंधित अनुरोधों के लिए सत्रों का उपयोग करें

एक Session परियोजनाओं के बीच कुकीज़ और डिफ़ॉल्ट कॉन्फ़िगरेशन को बनाए रखता है और अपने एडाप्टर्स के माध्यम से कनेक्शन पूलिंग का उपयोग करता है। यह उस अनुक्रम के लिए एक अच्छा फिट है जो एक अनुमत स्थिति, स्थलीय क्षेत्र और मेज़बान को साझा करता है। जब वह तार्किक कार्य समाप्त होता है, तो इसे बंद किया जाना चाहिए।

किसी भी संबंधहीन कार्यों में एक प्रामाणित या व्यक्तिगत सत्र साझा न करें। कुकीज़ सर्वर द्वारा लौटाए जाने वाले परिणामों को प्रभावित करती हैं और संग्रह को इच्छित सार्वजनिक दायरे से बाहर ले जा सकती हैं। रहस्यों को पर्यावरण या क्रेडेंशियल भंडारण में रखें, स्रोत, यूआरएल, लॉग या अनुक्रमित रिकॉर्ड में नहीं।

सत्र डिफ़ॉल्ट में हेडर, प्रमाणीकरण, प्रॉक्सी और क्वेरी पैरामीटर शामिल हो सकते हैं। प्रति-निवेदन मान उन्हें दस्तावेज़ में जहाँ वर्णित है, ओवरराइड कर देते हैं। डिफ़ॉल्ट सेट को छोटा रखें ताकि एक अनुरोध का व्यवहार समीक्षा के दौरान स्पष्ट बना रहे।

पार्सिंग के साथ सीमा को समझें

requests CSS चयनकर्ता या XPath प्रदान नहीं करता है। जब प्रतिक्रिया HTML हो, तो इसे BeautifulSoup, lxml, parsel, या किसी अन्य पार्सर के साथ जोड़ें। JSON के लिए, लौटाए गए ऑब्जेक्ट को सीधे अपेक्षित कुंजी और प्रकारों के खिलाफ मान्य करें।

requests भी पृष्ठ स्क्रिप्ट को निष्पादित नहीं करता है। एक ब्राउज़र ऐसा सामग्री प्रदर्शित कर सकता है जो अनुपस्थित है। response.textकच्ची प्रतिक्रिया की तुलना लाइव DOM से करें, अनुमत नेटवर्क स्रोतों की जांच करें, और रेंडर की गई अधिग्रहण का उपयोग करें जब आवश्यक डेटा केवल JavaScript चलने के बाद मौजूद हो।

  • एप्लिकेशन डेटा को डिकोड करने से पहले स्थिति की जांच करें। त्रुटि निकाय मान्य HTML या JSON हो सकते हैं।
  • अंतिम यूआरएल की पुष्टि करें। एक स्वचालित पुनर्निर्देशन एक सामान्य खाता या सहमति पृष्ठ पर पहुंच सकता है।
  • सामग्री प्रकार और पहचान की पुष्टि करें। एक ज्ञात शीर्षक या स्कीमा कुंजी प्रतिक्रिया वर्ग की पुष्टि करता है।
  • Sure, please provide the text you would like translated. बड़े डाउनलोड स्ट्रीम करें और जब शरीर स्वीकृत पृष्ठ अनुबंध को पार कर जाए तो रोकें।

प्रॉक्सी को बिना क्रेडेंशियल्स लीक किए कॉन्फ़िगर करें

requests प्रॉक्सी URLs को स्वीकार करता है। proxies तर्क और मानक वातावरण कॉन्फ़िगरेशन पढ़ सकते हैं। प्रॉक्सी प्रमाण पत्रों का इलाज एपीआई कीज़ की तरह करें: उन्हें स्रोत कोड के बाहर रखें, उन्हें अपवाद पाठ में प्रकट होने से रोकें, और पूर्ण प्रमाण पत्र वाले यूआरएल को आउटपुट में संग्रहीत न करें।

प्रॉक्सी का उपयोग एक अनुमति प्राप्त भौगोलिक और पहुंच उद्देश्य से मेल खाना चाहिए। एक अलग निकासी स्थान भाषा, मूल्य, आवंटन, सहमति आवश्यकताओं और कानूनी दायित्वों को बदल सकता है। निर्धारित क्षेत्र को बैच metadata के रूप में रिकॉर्ड करें ताकि डाउनस्ट्रीम तुलना एक दूसरे से न मिलें।

सर्वर अनुबंध द्वारा शरीर एन्कोडिंग चुनें

उपयोग करें params क्वेरी-स्ट्रिंग मानों के लिए, data फॉर्म या कच्चे शरीर की सामग्री के लिए, json एक JSON दस्तावेज़ के लिए, और files भागीय अपलोड के लिए। ये तर्क परस्पर अदला-बदली योग्य नहीं हैं, भले ही पायथन समान वर्णसूची स्वीकार करता हो। सर्वर अपने सामग्री प्रकार और अंत बिंदु अनुबंध के माध्यम से शरीर का विश्लेषण करता है।

प्रमाणीकरण एक समर्थित प्रमाणीकरण वस्तु, सत्र कॉन्फ़िगरेशन, या सेवा द्वारा परिभाषित स्पष्ट हेडर में होना चाहिए। क्रेडेंशियल्स को क्वेरी स्ट्रिंग्स से बाहर रखें क्योंकि URLs इतिहास, एक्सेस लॉग, विश्लेषण, और त्रुटि संदेशों में दिखाई देते हैं। एक तैयार किए गए अनुरोध को लॉग करने से पहले अधिकृत हेडर हटाएं।

एक डेटा अधिग्रहण API के लिए, सफलता की दोनों परतों को मान्य करें: HTTP प्रतिक्रिया और API लिफाफा या योजना। एक सफल HTTP स्थिति एक अनुप्रयोग-स्तरीय त्रुटि ले जा सकती है, जबकि एक JSON डिकोडर इनमें से किसी एक को पार्स कर सकता है। आवश्यक फ़ील्ड और अपेक्षित मान प्रकारों की जांच करनी चाहिए इससे पहले कि परिणाम एक HTML पार्सर तक पहुंचे।

बड़े धाराओं को स्ट्रीम करें और रिसोर्स बंद करें

Certainly! Please provide the text you would like to have translated. stream=True, हैडर की जांच करें, और सीमित हिस्सों पर दोहराएं। प्रतिक्रिया को स्पष्ट रूप से बंद किया जाना चाहिए या एक संदर्भ प्रबंधक में उपयोग किया जाना चाहिए। स्ट्रीमिंग स्थानीय मेमोरी को नियंत्रित करती है, लेकिन एप्लिकेशन को अभी भी एक स्वीकार्य अधिकतम बॉडी आकार और सामग्री प्रकार की जांच की आवश्यकता है।

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

HTTP और डेटा अनुबंधों को मान्य करें

भारत में साम्यवाद के गठन के 75 वर्षों के बाद, हम आज इस विचारधारा का पुनर्मूल्यांकन कर रहे हैं। क्या यह वास्तव में काम कर रहा है या यह एक विफल प्रयोग है? ## साम्यवाद के सिद्धांत - वर्ग संघर्ष - सामूहिक स्वामित्व - उत्पादन के साधनों का नियंत्रित वितरण ### 1. सामाजिक न्याय विभिन्न स्तरों पर समरूपता पर ध्यान केंद्रित करना। ### 2. अर्थव्यवस्था का नियंत्रण सर्वजनिक क्षेत्र में प्रमुख उद्योगों का अधिग्रहण। ### 3. राजनीतिक ढांचा अधिकारों के लिए संघर्ष और केंद्रीकरण के खिलाफ विरोध। [अधिक जानकारी के लिए यहाँ क्लिक करें](https://example.com) | वर्ष | प्रमुख घटनाएँ | |------|----------------| | 1950 | भारत में साम्यवाद का उदय | | 1977 | पहला साम्यवादी राज्य | | 1991 | साम्यवाद का अंत | HTTP अर्थशास्त्र विनिर्देश अपने तरीके, स्थिति कोड, और प्रतिक्रिया व्यवहार को परिभाषित करता है। एप्लिकेशन की सत्यता उस परत के ऊपर होती है। एक सफल प्रतिक्रिया को फिर भी इच्छित होस्ट, अंतिम पथ, सामग्री प्रकार, पृष्ठ पहचान, और डेटा स्कीमा से मेल खाना चाहिए।

सार्वजनिक-वेब कार्यप्रवाहों के लिए, अनुरोध भेजने से पहले अधिकृत दायरे को परिभाषित करें। शर्तों और लागू कानूनों की समीक्षा करें, पहुंच नियंत्रणों का सम्मान करें, और उपयोग करें रोबोट्स बहिष्कार प्रोटोकॉल एक मशीन-خوانने योग्य इनपुट के रूप में क्रॉवलर नीति।

निष्कर्ष

Python requests लाइब्रेरी कई डेटा वर्कफ़्लो के लिए परिवहन परत है। यह HTTP को संक्षिप्त बनाता है, सत्रों और कनेक्शन पुनः उपयोग को प्रदान करता है, प्रतिक्रिया मेटाडेटा को उजागर करता है, और स्ट्रीमिंग और प्रॉक्सी का समर्थन करता है। यह HTML को पार्स नहीं करता है या JavaScript चलाता है। विश्वसनीय उपयोग स्पष्ट समय सीमाएँ, अंतिम-URL और पहचान जांचें, सीमित निकाय, सावधानी से सत्र का दायरा, और वहाँ आवश्यक होने पर एक अलग पार्सर या रेंडर्ड अधिग्रहण परत को जोड़ता है।

क्या आप प्रबंधित वेब अधिग्रहण के साथ उपयोग के लिए तैयार अनुरोधों के लिए तैयार हैं?

Scrapeless को एक परिचित Python HTTP क्लाइंट से कॉल करें, लौटाई गई सामग्री का मान्यकरण करें, और इसे पार्सर और स्कीमा को सौंपें जो आपकी एप्लिकेशन पहले से ही उपयोग करती है।

आज ही साइन अप करें और प्राप्त करें $5 मुफ्त क्रेडिट मेंकोई क्रेडिट कार्ड आवश्यक नहीं है.

अपने $5 क्रेडिट का दावा करें →

अक्सर पूछे जाने वाले प्रश्न

क्या requests Python मानक पुस्तकालय का हिस्सा है?

नहीं। requests एक तीसरे पक्ष का पैकेज है जो अलग से स्थापित किया गया है। Python की मानक पुस्तकालय में निम्न-स्तरीय HTTP और URL मॉड्यूल शामिल हैं, जबकि requests एक उच्च-स्तरीय इंटरफ़ेस प्रदान करता है।

requests और BeautifulSoup के बीच में क्या अंतर है?

requests एक HTTP प्रतिक्रिया प्राप्त करता है, जबकि BeautifulSoup HTML या XML को पार्स करता है। एक सामान्य स्थिर-पृष्ठ कार्यप्रवाह पहले requests का उपयोग करता है और फिर BeautifulSoup का।

क्या Python requests JavaScript निष्पादित कर सकता है?

नहीं। requests सर्वर प्रतिक्रिया को पुनः प्राप्त करता है और ब्राउज़र नहीं चलाता है। जब स्क्रिप्ट आवश्यक पृष्ठ सामग्री बनाती हैं, तो रेंडर्ड अधिग्रहण का उपयोग करें।

क्यों हर requests कॉल को एक टाइमआउट सेट करना चाहिए?

एक स्पष्ट टाइमआउट एक श्रमिक को एक ज्ञात नेटवर्क सीमा देता है और कतार की क्षमता की रक्षा करता है। बिना एक के, एक अनुरोध उस समय से बहुत अधिक लंबा इंतज़ार कर सकता है जितना कि अनुप्रयोग की उम्मीद होती है।

कब एक requests सत्र का उपयोग किया जाना चाहिए?

कुकीज़, हेडर, प्रमाणीकरण, या एक कनेक्शन पूल साझा करने वाले संबंधित अनुरोधों के लिए एक सत्र का उपयोग करें। इसे एक तार्किक पहचान तक सीमित रखें और इसके बाद इसे बंद करें।

संदर्भ