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

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

स्क्रेपलेस वेब अनलॉकर प्रबंधित वेब-सामग्री पुनर्प्राप्ति प्रदान करता है जिसे पायथन HTTP क्लाइंट एक API के माध्यम से कॉल कर सकते हैं।

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

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

TL;DR

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

अनुरोध क्या करता है?

अनुरोध HTTP अनुरोधों का निर्माण करता है और प्रतिक्रिया वस्तुओं को लौटाता है जिन्हें पायथन कोड निरीक्षण कर सकता है। अनुरोध HTTP इंटरफेस सामान्य अनुरोध विधियों, प्रश्न पैरामीटर, हेडर्स, फॉर्म डेटा, JSON निकायों, और प्रतिक्रिया प्रबंधन का समर्थन करता है।

एक अनुरोध में एक गंतव्य URL और एक विधि होती है। प्रश्न पैरामीटर URL प्रश्न में होते हैं, जबकि एक समर्थित अनुरोध निकाय संरचित इनपुट ले जा सकता है। उन विकल्पों को गंतव्य API के साथ सही रखें बजाय इसके कि हर सर्वर उसी प्रारूप को स्वीकार करता है।

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

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

सही तरीके से प्रतिक्रिया पढ़ने के लिए

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

स्थिति कोड पहला सुराग है। अनुरोध इसे सीधे उजागर कर सकता है और एक HTTP त्रुटि स्थिति के लिए एक अपवाद बढ़ा सकता है। raise_for_status()वह जाँच यह साबित नहीं करती है कि सफल स्थिति निकाय में वांछित फ़ील्ड हैं। कुछ वेबसाइटें पहुँच पृष्ठ या सामान्य सफलता स्थिति के साथ एक खाली आवेदन खोलती हैं।

सामग्री प्रतिनिधित्व को जानबूझकर चुनें। content प्रतिक्रिया बाइट्स प्रदान करता है; text डिकोडेड टेक्स्ट प्रदान करता है। json() जब प्रतिक्रिया निकाय मान्य JSON होता है तो JSON को डिकोड करता है। एक सर्वर एक मान्य JSON त्रुटि ऑब्जेक्ट लौटा सकता है, इसलिए सफल डिकोडिंग के बाद स्थिति और स्कीमा जाँच की जानी चाहिए।

निकाले गए रिकॉर्ड के लिए, स्रोत URL और प्रासंगिक अनुरोध संदर्भ को फ़ील्ड के साथ दर्ज करें। यदि एक पुनर्निर्देशन गंतव्य को बदलता है, तो अंतिम URL को भी रखें। वह स्रोत यह समझाने में मदद करता है कि दो रन ने अलग-अलग सामग्री क्यों उत्पन्न की।

अनुरोध सत्र क्या बनाए रखता है

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

कुकीज़ और TCP कनेक्शन निरंतरता के अलग रूप हैं। एक कुकी आवेदन की स्थिति की पहचान कर सकती है, जबकि एक पूल किया गया कनेक्शन कनेक्शन सेटअप कार्य को कम करता है। दोनों स्वचालित रूप से आपके ट्रैफ़िक को एक प्रॉक्सी निकासी से नहीं बांधते हैं। यदि किसी कार्यप्रवाह को एक स्थिर निकासी IP की आवश्यकता है, तो प्रॉक्सी की सत्र नीति को इसे अलग से प्रदान करना चाहिए।

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

जब कार्यप्रवाह समाप्त होता है तो सत्र को बंद करें। स्ट्रीम की गई प्रतिक्रियाओं के लिए, प्रतिक्रिया को खपत या बंद करें ताकि कनेक्शन संसाधनों को मुक्त किया जा सके। एक दीर्घकालिक एप्लिकेशन को जानबूझकर संसाधन स्वामित्व की आवश्यकता होती है; हर प्रतिक्रिया को खुला छोड़ने से उसी पूल का exhausted होना हो सकता है जिसे दक्षता में सुधार करने के लिए अभिप्राय किया गया था।

अनुरोध समय सीमा का क्या अर्थ है?

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

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

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

विफलताओं का निदान चरण द्वारा करें। नाम समाधान, कनेक्शन स्थापना, TLS प्रमाणन, HTTP स्थिति, और डिकोडिंग अलग समस्याएँ हैं। चरण और एक संतुलित त्रुटि श्रेणी को कैप्चर करना केवल यह लॉग करने से अधिक उपयोगी है कि अनुरोध विफल हो गया।

हेडर्स, प्रमाणीकरण और रीडायरेक्ट

हेडर्स अनुरोध मेटाडेटा का वर्णन करते हैं, जबकि प्रमाणीकरण गंतव्य या प्रॉक्सी द्वारा आवश्यक प्रमाण-पत्र प्रदान करता है। उस तंत्र का उपयोग करें जिसे एपीआई वास्तव में प्रलेखित करता है, और रहस्यों को प्रकाशित स्रोत कोड और सामान्य लॉग के बाहर रखें।

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

रीडायरेक्ट अंतिम गंतव्य को बदल सकते हैं। जब कार्य किसी विशेष संसाधन पर निर्भर करता है, तो रीडायरेक्ट इतिहास और अंतिम URL का निरीक्षण करें। लॉगिन स्क्रीन या होमपेज पर आंदोलन को सामग्री असमानता के रूप में मानें, भले ही वह गंतव्य सफल स्थिति लौटाता हो।

गंतव्य प्रमाण-पत्रों को प्रॉक्सी प्रमाण-पत्रों से अलग करें। प्रॉक्सी प्रमाणीकरण साबित करता है कि आप एक राउटिंग सेवा का उपयोग कर सकते हैं; गंतव्य प्रमाणीकरण साबित करता है कि एप्लिकेशन अनुरोधित संसाधन तक पहुंच सकता है। गलत स्तर पर रहस्य पास करने से अनुरोध विफल हो सकता है और अनावश्यक रूप से प्रमाणपत्रों को उजागर कर सकता है।

प्रश्नों द्वारा प्रॉक्सी और TLS का उपयोग कैसे किया जाता है

प्रश्न HTTP और HTTPS गंतव्य यातायात को कॉन्फ़िगर किए गए प्रॉक्सी के माध्यम से रूट कर सकते हैं, और यह डिफ़ॉल्ट रूप से HTTPS प्रमाणपत्रों की पुष्टि करता है। TLS प्रोटोकॉल उन कनेक्शनों के लिए एन्क्रिप्टेड परिवहन प्रदान करता है जहां TLS का उपयोग होता है; केवल प्रॉक्सी रूटिंग हर कनेक्शन के लिए एन्क्रिप्शन नहीं बनाती है।

गंतव्य योजना और प्रॉक्सी योजना विभिन्न हवाओं का वर्णन करती है। एक HTTPS URL को एक HTTP प्रॉक्सी के माध्यम से CONNECT टनल का उपयोग करके अनुरोध किया जा सकता है। लक्ष्य का TLS सत्र उस टनल के अंदर क्लाइंट और गंतव्य के बीच बना रह सकता है। एक TLS-सक्षम प्रॉक्सी परिवहन क्लाइंट-से-प्रॉक्सी कनेक्शन की सुरक्षा बढ़ाता है जब क्लाइंट और प्रॉक्सी इसका समर्थन करते हैं।

प्रश्न पर्यावरण कॉन्फ़िगरेशन पर भी विचार करता है, इसलिए एक शेल या तैनाती स्तर की प्रॉक्सी सेटिंग एक अन्यथा सरल कॉल को प्रभावित कर सकती है। व्यवहार भिन्न होने पर प्रभावी सेटिंग्स का निरीक्षण करें। बहिष्करण नियमों को जानबूझकर रखें, न कि यह मानते हुए कि एक एप्लिकेशन-विशिष्ट प्रॉक्सी मान हर संभव मार्ग को नियंत्रित करता है।

SOCKS समर्थन संबंधित वैकल्पिक निर्भरता की आवश्यकता करता है। होस्टनाम-समाधान व्यवहार चुनी गई योजना पर निर्भर करता है: प्रश्नों का कार्यान्वयन स्थानीय समाधान को प्रॉक्सी-पक्ष के समाधान से अलग करता है। गोपनीयता या स्थान के दावे करने से पहले क्लाइंट के समर्थन और DNS व्यवहार को सत्यापित करें।

प्रश्नों की तुलना Scrapey और एक ब्राउज़र से करें

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

आवश्यकताकेवल प्रश्नअतिरिक्त परत
एक ज्ञात सार्वजनिक URL लाएंअनुरोध भेजा जा सकता है और प्रतिक्रिया का निरीक्षण किया जा सकता हैयदि संरचित फ़ील्ड की आवश्यकता होती है तो एक parser
लिंक्ड पृष्ठों की खोज करेंएप्लिकेशन कोड को खोज को व्यवस्थित करना चाहिएशेड्यूलिंग और स्कोप के लिए एक क्रॉलर ढांचा
पृष्ठ JavaScript चलाएंब्राउज़र पृष्ठ कोड निष्पादित नहीं करता हैएक रेंडरिंग या ब्राउज़र परत
व्यापार रिकॉर्ड सत्यापित करेंव्यापार स्कीमा नहीं जानतास्पष्ट स्कीमा और सामग्री जांचें

यह Python डेटा अधिग्रहण उपकरण तुलना इन जिम्मेदारियों को अलग करने में मदद करता है। एक अलग HTML parser चुनने से फ़ाइल में अनुपस्थित सामग्री का समाधान नहीं होगा।

प्रबंधित सामग्री पुनर्प्राप्ति कहाँ फिट होती है

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

यह वेब अनलॉकर पुनर्प्राप्ति प्रलेखन उत्पाद की भूमिका का वर्णन करता है। एक प्रबंधित सेवा के लिए एक अनुरोध में दो अनुबंध होते हैं जिन्हें निरीक्षण करने की आवश्यकता होती है: सेवा प्रतिक्रिया और लक्षित सामग्री जिसे वह ले जाता है। सामग्री को एक parser या रिकॉर्ड को स्टोर करने से पहले सेवा परिणाम का सत्यापन करें।

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

समीक्षा स्क्रैपलेस मूल्य निर्धारण आपके कार्य की आवश्यकता के अनुसार पुनर्प्राप्ति की मात्रा के खिलाफ। स्वीकृत सामग्री और मान्य रिकॉर्ड का उपयोग करें कि तुलना का परिणाम, हर पूर्ण HTTP विनिमय को समान कार्य मानते हुए नहीं।

निष्कर्ष

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

सही HTTP पुनर्प्राप्ति स्तर चुनें

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

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

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

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

प्रश्न: क्या अनुरोध पायथन मानक पुस्तकालय का हिस्सा है?

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

प्रश्न: क्या अनुरोध JavaScript निष्पादित करता है?

अनुरोध पृष्ठ JavaScript निष्पादित नहीं करता है। यह HTTP अनुरोध द्वारा लौटाई गई सामग्री प्राप्त करता है। यदि फ़ील्ड केवल ब्राउज़र रेंडरिंग के बाद प्रकट होते हैं, तो वास्तविक डेटा स्रोत की जांच करें या बार-बार निकालने के चयनकर्ताओं को बदलने के बजाय रेंडरिंग स्तर चुनें।

प्रश्न: क्या सफल JSON डिकोडिंग का मतलब है कि अनुरोध सफल हुआ?

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

प्रश्न: क्या अनुरोध सत्र समान प्रॉक्सी IP बनाए रखता है?

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

प्रश्न: प्रमाणपत्र सत्यापन सक्षम क्यों रहना चाहिए?

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

संदर्भ