2016-03-03 13 views
7

Tôi có nhiều nhện lùn chạy song song sử dụng scrapyd. Những gì tôi đang làm là một cái gì đó giống như mã sau đây.Chạy Selenium không đầu với nhiều nhện

Câu hỏi của tôi là, tôi có thực sự cần bắt đầu hiển thị cho mọi con nhện và người lái xe biết bắt đầu sử dụng màn hình nào không? Tôi có nên bắt đầu một màn hình trên toàn cầu và bắt đầu nhiều cá thể webdriver trong cùng một Màn hình không?

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 

Trả lời

3

Tôi đề xuất sử dụng trình xử lý trình duyệt splinter thay thế; nó là một wrapper quanh selenium. Nó giải quyết vấn đề của bạn chính xác, khi xử lý Hiển thị được thực hiện bởi gói.

Với một vài cài đặt gói khác, bạn cũng có thể loại bỏ nhu cầu hiển thị hoàn toàn, có nghĩa là hiện tượng phân tách hiện không có đầu (cửa sổ trình duyệt không mở và nhanh hơn nhiều). Kiểm tra các Splinter docs để biết làm thế nào để thực hiện trong không đầu. Cá nhân tôi đề xuất trình điều khiển PhantomJS, mặc dù bạn sẽ phải cài đặt chương trình không phải Python PhantomJS.

Các vấn đề liên quan