scrapy 크롤링 중 이중 for문 질문 입니다.

조회수 1312회

스크래피 스파이더 작성 질문 입니다. 간단한 코드를 작성하고 테스트 중인데요 이중 FOR문을 쓴 item의 DB 저장이 문제 입니다.

스파이더 중 item 스크랩 영역은 아래와 같습니다.

    def parse_item(self, response):
            for sel in response.xpath('//*[@id="contents"]/div[10]/section/section[1]/section[1]'):
            item = item()

            #아이템 스크랩 영역

                for actress in sel.xpath("//*[@itemprop='actors']//*[@itemprop='name']"):
                    actress_ = actress.xpath("text()").extract()
                    item['Actress'] = actress_[0].strip()
                    yield item

두번째 for을 작성한 이유는

<div class="actress">
    <span>여배우1</span>
    <span>여배우2</span>
    <span>여배우3</span>
</div>

처럼 여배우 1,2,3을 스크랩하기 위함 입니다. 그런데 스파이더 실행 후

DB를 확인해보면 여배우 3만 저장됩니다. 다른페이지도 마찬가지구요.

그래서 yield아래에 print(item['Actress']) 후 커맨드 창에서 확인을 해보면 여배우 1,2,3이 모두 출력 됩니다. pudb로 디버깅을 해봐도 1,2,3이 모두 yield되는 것 같기는 한데..(이부분은 확실치 않네요)

아무리 봐도 뭐가 문제인지 모르겠습니다.

파이프라인이나 세팅에서도 별 문제가 없는데.. 실제 테이블에는 마지막 span 태그만 저장되는 문제가 나타납니다.

어떤 문제일지 조언 부탁드립니다 ^

1 답변

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.