• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

title과 price의 매치가 안됩니다.

20.03.08 13:32 작성 조회수 135

0

선생님 안녕하세요. 

선생님이 알려주신 코드대로 title과 price를 맞춰보려고 했지만 enumerate로 돌려보면 list에서 out of range라는 에러가 발생합니다.

그래서 지금은 이게 최선인데 제가 이상하게 짠 것인지 여쭙고 싶습니다.

# -*- coding: utf-8 -*-
import scrapy
from gmarket.items import GmarketItem

class GmSpider(scrapy.Spider):
    name = 'gm'
    allowed_domains = ['corners.gmarket.co.kr/Bestsellers']
    start_urls = ['http://corners.gmarket.co.kr/Bestsellers']

    def parse(selfresponse):
        titles = response.css('div.best-list > ul > li> a::text').getall()
        prices = response.css('div.item_price > div.s-price > strong > span > span::text').getall()
        
        item = GmarketItem()
        item['price'] = prices
        item['title'] = titles
        yield item

답변 1

답변을 작성해보세요.

0

안녕하세요. titles와 prices는 리스트로 데이터가 들어올 것이라서, 다음과 같이 각 리스트의 개별데이터를 빼내어 item으로 만들어줘야 합니다. 혹시라도 혹시라도 리스트에 대해 아직 익숙하지 않으시다면, 파이썬입문과 크롤링기초 부트캠프 [쉽게! 하지만, 견고한 자료로!] 강좌의 앞에 파이썬 70문제를 다시한번 스스로 풀어보셔도 좋을 것 같습니다. scrapy는 조금 중급이라서 파이썬이 익숙하지 않으면 어디가 잘못되엇는지 혼자서 판단하기가 어렵습니다.

감사합니다.!

for num, title in enumerate(titles):
doc = EcommerceItem()
doc['title'] = title
doc['price'] = prices[num].strip().replace("원", "").replace(",", "")
yield doc