2012-03-07 5 views
1

단일 치료 프로젝트에 여러 개의 스파이더가 있습니다.파이프 라인에 텍스트 파일 쓰기

스파이더 이름과 타임 스탬프가있는 각 스파이더에 대해 별도의 출력 텍스트 파일을 작성하고 싶습니다. 나는 하나의 거미 내가 __init 방법으로 파일을 생성했지만 지금은이 같은 노력하고 있었다 때

, upromise 두 개의 출력 파일 동안 다른 것 하나를 생성합니다.

File "C:\Users\akhter\Dropbox\akhter\mall_crawler\mall_crawler\pipelines.py", line 24, in process_item 
    self.aWriter.writerow([item['mall'], item['store'], item['bonus'], item['per_action'], 
exceptions.AttributeError: 'MallCrawlerPipeline' object has no attribute 'aWriter' 

어떤 도움을 주시면 감사하겠습니다 :

class MallCrawlerPipeline(object): 

def spider_opened(self, spider): 
    self.aWriter = csv.writer(open('../%s_%s.txt' % (spider.name, datetime.now().strftime("%Y%m%d_%H%M%S")), 'wb'), 
     delimiter=',', quoting=csv.QUOTE_MINIMAL) 
    self.aWriter.writerow(['mall', 'store', 'bonus', 'per_action', 'more_than','up_to', 'deal_url', 'category']) 

    if 'upromise' in spider.name: 
     self.cWriter = csv.writer(
      open('../%s_coupons_%s.txt' % (spider.name, datetime.now().strftime("%Y%m%d_%H%M%S")), 'wb'), 
      delimiter=',', quoting=csv.QUOTE_MINIMAL) 
     self.cWriter.writerow(['mall', 'store', 'bonus', 'per_action', 'more_than','up_to', 'deal_url', 'category']) 

def process_item(self, item, spider): 
    self.aWriter.writerow([item['mall'], item['store'], item['bonus'], item['per_action'], 
          item['more_than'], item['up_to'], item['deal_url'], item['category']]) 

    return item 

하지만이 버그에 직면하고있다. 미리 감사드립니다.

+1

aWriter는 어디에 정의되어 있습니까? 이 객체가'객체 '이외의 것으로부터 상속되어야 하는가? –

+0

@ sr2222 답장을 보내 주셔서 감사합니다. 그러나 매우 유감스럽게 생각합니다. 파이썬에 대해서는 그리 grep이 없으므로 자세한 답변을 제공해 주시겠습니까? –

답변

0

고마워, 내가 대답을 찾았다면, 그렇지 않다면 spider_opened를 방법으로 전화하면 안된다. 제안을 위해 열어 두십시오.

def __init__(self): 
    dispatcher.connect(self.spider_opened, signals.spider_opened) 
1

전에 항상 obj.spider_opened(...)을 실행 하시겠습니까? 첫 번째 메서드 호출 후에 해당 특성을 개체에 추가해야하는 것처럼 사용자가 아닌 것처럼 보입니다.

첫 번째 메서드 호출이 항상 필요할 경우 아마 __init__으로 이동하거나 거기에서 호출하는 것이 좋습니다.

+0

답장을 보내 주셔서 감사합니다. @Eduardo lvanec, 제가 이것을 __init__으로 옮긴다면저기서 거미 이름에 어떻게 접근 할 수 있습니까? –

관련 문제