] यह अक्सर ऐसा होता है जब पेजिनेशन एसिंक्रोनस लोडिंग पर निर्भर करता है, जैसे कि "नेक्स्ट" बटन पर क्लिक करना जो यूआरएल को संशोधित नहीं करता है। इस चुनौती को दूर करने के लिए, सेलेनियम को अपने स्क्रेपी स्पाइडर में शामिल करना एक प्रभावी समाधान हो सकता है। हालाँकि, कई सामान्य दृष्टिकोणों में शामिल हैं:
के अंदर () विधि: इस दृष्टिकोण में प्रत्येक पृष्ठ के लिए पृष्ठांकन और डेटा निष्कर्षण को संभालने के लिए अपने स्पाइडर के पार्स () के भीतर सेलेनियम का उपयोग करना शामिल है। यह मकड़ी के पार्स () विधि पर प्रतिक्रिया पारित करने से पहले पेजिनेशन करता है। यह सेलेनियम लॉजिक पर अधिक लचीला नियंत्रण के लिए अनुमति देता है। निम्नलिखित स्निपेट प्रदर्शित करता है कि सेलेनियम को स्क्रैपी के साथ कैसे एकीकृत किया जाए:
आयात स्क्रैपी सेलेनियम आयात वेबड्राइवर से क्लास प्रोडक्टस्पाइडर (स्क्रैपी.स्पाइडर): नाम = "product_spider" अनुमत_डोमेन = ['eBay.com'] start_urls = def __init __ (स्व): self.driver = webdriver.firefox () def parse (स्व, प्रतिक्रिया): self.driver.get (response.url) जबकि सच: अगला = self.driver.find_element_by_xpath ('// td [@class = "pagn-next"]/a') कोशिश करना: Next.Click () # यहां डेटा प्राप्त करें और संसाधित करें के अलावा: तोड़ना self.driver.close ()
वैकल्पिक: कुछ मामलों में Scrapayjs मिडलवेयर
का उपयोग करना, ScrapyJS मिडलवेयर का उपयोग करके सेलेनियम की आवश्यकता के बिना एक वेबपेज के गतिशील भागों को संभालने के लिए पर्याप्त हो सकता है। यह मिडलवेयर आपको स्क्रैपी फ्रेमवर्क के भीतर कस्टम जावास्क्रिप्ट को निष्पादित करने की अनुमति देता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3