डायनामिक पेजों के लिए स्क्रैपी के साथ सेलेनियम को एकीकृत करना
डायनामिक सामग्री के साथ जटिल वेबसाइटों को स्क्रैप करते समय, सेलेनियम, एक वेब ऑटोमेशन फ्रेमवर्क, को इसके साथ एकीकृत किया जा सकता है चुनौतियों पर काबू पाने के लिए स्क्रैपी, एक वेब स्क्रैपिंग ढांचा।
सेलेनियम को एक में एकीकृत करना स्क्रैपी स्पाइडर
सेलेनियम को अपने स्क्रैपी स्पाइडर में एकीकृत करने के लिए, स्पाइडर की __init__ विधि के भीतर सेलेनियम वेबड्राइवर को प्रारंभ करें।
import scrapy from selenium import webdriver class ProductSpider(scrapy.Spider): name = "product_spider" allowed_domains = ['example.com'] start_urls = ['http://example.com/shanghai'] def __init__(self): self.driver = webdriver.Firefox()
इसके बाद, पार्स विधि के भीतर URL पर नेविगेट करें और पेज के साथ इंटरैक्ट करने के लिए सेलेनियम विधियों का उपयोग करें।
def parse(self, response): self.driver.get(response.url) next = self.driver.find_element_by_xpath('//td[@class="pagn-next"]/a') next.click()
इस दृष्टिकोण का उपयोग करके, आप उपयोगकर्ता इंटरैक्शन का अनुकरण कर सकते हैं, गतिशील पृष्ठों को नेविगेट कर सकते हैं और वांछित डेटा निकाल सकते हैं।
स्क्रेपी के साथ सेलेनियम का उपयोग करने का विकल्प
कुछ परिदृश्यों में, ScrapyJS मिडलवेयर का उपयोग बिना किसी पृष्ठ के गतिशील भागों को संभालने के लिए पर्याप्त हो सकता है सेलेनियम. उदाहरण के लिए, निम्नलिखित उदाहरण देखें:
# scrapy.cfg DOWNLOADER_MIDDLEWARES = { 'scrapyjs.SplashMiddleware': 580, }
# my_spider.py class MySpider(scrapy.Spider): name = 'my_spider' start_urls = ['http://example.com/dynamic'] def parse(self, response): script = 'function() { return document.querySelectorAll("div.product-info").length; }' return Request(url=response.url, callback=self.parse_product, meta={'render_javascript': True, 'javascript': script}) def parse_product(self, response): product_count = int(response.xpath('//*[@data-scrapy-meta]/text()').extract_first())
यह दृष्टिकोण बिना वांछित डेटा प्राप्त करने के लिए ScrapyJS का उपयोग करके जावास्क्रिप्ट रेंडरिंग को नियोजित करता है सेलेनियम का उपयोग करना।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3