강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

송진영님의 프로필 이미지
송진영

작성한 질문수

현존 최강 크롤링 기술: Scrapy와 Selenium 정복

강력/최신 크롤링 기술: Scrapy 로 css selector/xpath 사용하기

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

작성

·

239

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
송진영님의 프로필 이미지
송진영

작성한 질문수

질문하기