-
카테고리
-
세부 분야
데이터 엔지니어링
-
해결 여부
미해결
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(self, response):
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
답변을 작성해보세요.
0
잔재미코딩 DaveLee
지식공유자2020.03.10
안녕하세요. 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
답변 1