2014-12-16 15 views
6

tôi có một pipelines.py cào và tôi muốn lấy các đối số đã cho. Trong spider.py của tôi, nó hoạt động hoàn hảo:Sử dụng các đối số trong đường ống bẩn trên __init__

class MySpider(CrawlSpider): 
    def __init__(self, host='', domain_id='', *args, **kwargs): 

     super(MySpider, self).__init__(*args, **kwargs) 
     print user_id 
     ... 

Bây giờ, tôi cần "user_id" trong pipelines.py để tạo cơ sở dữ liệu sqlite như "domain-123.db". Tôi tìm kiếm trên toàn bộ web về vấn đề của tôi, nhưng tôi không thể tìm thấy bất kỳ giải pháp.

Ai đó có thể giúp tôi không?

PS: Có, tôi đã thử chức năng super() trong đường ống của tôi Lớp như spyer.py, nó không hoạt động.

Trả lời

12

Đặt các đối số trong constructor 's spider:

class MySpider(CrawlSpider): 
    def __init__(self, user_id='', *args, **kwargs): 
     self.user_id = user_id 

     super(MySpider, self).__init__(*args, **kwargs) 

Và đọc chúng trong phương pháp open_spider() đường ống của bạn:

def open_spider(self, spider): 
    print spider.user_id 
+0

Bạn lưu ngày của tôi, nó hoạt động hoàn hảo. Cảm ơn! – user3507915

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