2016-03-03 9 views
7

मेरे पास कई स्केपर मकड़ियों हैं जो स्कैरेड का उपयोग करके समानांतर में चलते हैं। मैं जो कर रहा हूं वह निम्नलिखित कोड जैसा है।एकाधिक मकड़ियों के साथ सेलेनियम हेडलेस चलाना

मेरा सवाल है, क्या मुझे वास्तव में प्रत्येक मकड़ी के लिए एक प्रदर्शन शुरू करने की आवश्यकता है और ड्राइवर किस प्रदर्शन का उपयोग शुरू करना सीखता है? क्या मुझे वैश्विक स्तर पर एक डिस्प्ले शुरू करना चाहिए और उसी डिस्प्ले के भीतर कई वेबड्राइवर इंस्टेंस शुरू करना चाहिए?

def __init__(self): 
    dispatcher.connect(self.spider_closed, signals.spider_closed) 

def spider_closed(self, spider): 
    if self.driver: 
     self.driver.quit() 

    if self.display: 
     self.display.stop() 

def parse(self, response): 
    self.display = Display(visible=0, size=(1024, 768)) 
    self.display.start() 
    self.driver = webdriver.Firefox() 

    self.driver.get(response.url) 
    page = Selector(text=self.driver.page_source) 

    # doing all parsing etc 

उत्तर

3

मैं इसके बजाय splinter ब्राउज़र हैंडलर का उपयोग करने का सुझाव देता हूं; यह सेलेनियम के चारों ओर एक रैपर है। यह आपकी समस्या को ठीक तरह से हल करता है, क्योंकि डिस्प्ले हैंडलिंग पैकेज द्वारा किया जाता है।

कुछ और पैकेज इंस्टॉलेशन के साथ, आप एक डिस्प्ले की पूरी तरह से आवश्यकता को भी हटा सकते हैं, जिसका अर्थ है स्प्लिंटर अब हेडलेस है (ब्राउजर विंडो खुलती नहीं है, और यह बहुत तेज है)। हेडलेस में कैसे बनाना है, यह जानने के लिए Splinter docs देखें। मैं व्यक्तिगत रूप से फैंटॉमजेएस ड्राइवर का सुझाव देता हूं, भले ही आपको गैर-पायथन फ़ैंटॉमजेएस प्रोग्राम स्थापित करना पड़े।

संबंधित मुद्दे