inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

실전 크롤링: 지마켓 크롤링하며, scrapy 실전 활용법 익히기5

두번째 Request의 callback 부분이 작동을 안합니다..

59

Seungwoon Song

작성한 질문수 1

0

삭제된 글입니다

scrapy selenium 웹-크롤링

답변 1

0

Seungwoon Song

# -*- coding: utf-8 -*-
import scrapy


class GmarketCategoryAllSpider(scrapy.Spider):
    name = 'gmarket_category_all'


    def start_requests(self):
        yield scrapy.Request(url='http://corners.gmarket.co.kr/Bestsellers', callback = self.parse)
 
    def parse(selfresponse):
        print("parse1")
        category_links = response.css('#categoryTabG li a ::attr(href)').getall()
        category_names = response.css('#categoryTabG li a ::text').getall()
        for index, category_link in enumerate(category_links):
            yield scrapy.Request(url = 'http://corners.gmarket.co.kr/'+category_link, callback = self.parse_item, meta = {'category_name':  category_names[index]})
        #이런식으로 Recursive하게 작동시킬 수 있다.
        for index, category_link in enumerate(category_links):
            yield scrapy.Request(url = 'http://corners.gmarket.co.kr/'+category_link, callback = self.parse_subcategory, meta = {'category_name':  category_names[index]})
      
    def parse_subcategory(selfresponse):
        print("sub category 진입")
        subcategory_links = response.css('div.navi.group > ul > li::attr(href)').getall()
        subcategory_texts = response.css('div.navu.group > ul > li::text').getall()

        for index,subcategory_link in enumerate(subcategory_links):
            yield scrapy.Request(url='http://corners.gmarket.co.kr'+subcategory_link, callback=self.parse_item, meta={'category_name''subcategory'+subcategory_texts[index])

    def parse_item(self,response):
        print("parse_item", response.meta['category_name'])
        page_item = response.css('div.best-list')
        for index,item in enumerate(page_item[1].css('li')):
            rank = index + 1
            title = item.css('a.itemname::text').get()
            origin_price = item.css('div.o-price span span::text').get()
            sale_price = item.css('div.s-price strong span span::text').get()
            percentage = item.css('div.s-price em::text').get()
            if(origin_price == None):
                origin_price = sale_price
            if(percentage == None):
                percentage = '0'
            else:
                percentage = percentage.replace("%", "")
            origin_price = origin_price.replace("","").replace(",","")
            sale_price = sale_price.replace("", "").replace(",", "")
            # print(rank, title, origin_price, sale_price, percentage)   


        
전체 코드는 위처럼 짰습니다.
제가 놓친 부분이 있을까요?

코딩을 잘 따라 한 것 같은데 오류가 발생하는 것 같습니다

0

626

1

scrapy를 jupyter 환경에서 할 수 있나요

0

361

1

[실전 크롤링: scrapy 크롤링 팁] 질문있습니다.

0

313

1

[실전 크롤링: 지마켓 크롤링하며, scrapy 실전 활용법 익히기1] 5분50초쯤 질문

0

221

1

[강력/최신 크롤링 기술: Scrapy 로 지마켓 크롤링하기1] 관련 질문

0

279

1

xml을 parsing할때 <을 &lt; 로 인식합니다.

0

335

1

pipelines.py에서 process_item내에서 print문이 작동을 하지 않네요 ㅠ

0

292

3

PhantomJS 문의

0

294

1

selenium 문의

0

330

1

브라우저 제어해서 크롤링하기 - 처음강의 마지막부분 문의

0

3004

1

on error 해결 방법 질문

0

356

1

[팁] 윈도우 cmd 커맨드

0

347

1

[팁]Chrome User Agent 아는법

0

328

1

실전 크롤링: 브라우저를 제어해서 트위터 사이트 로그인 하기 질문

0

255

1

동영상 강의 만드실 때 사용한 툴을 알려주실 수 있을까요?

0

237

1

CSS Selector 에서 질문이 있습니다.

0

436

2

pip install scrapy 오류

0

484

1

셀레니움 실행불가

0

1578

1

실전 크롤링: XPATH와 Selenium 활용해서 페이스북 로그인 하기 에서 질문이 있습니다.

0

227

1

언제 get_text()를 사용하고 또 언제 .text를 사용하나요?

0

288

1

강의교안자료 받을수있을까요?

0

263

1

[강의 9:27관련 질문] price, title 열 위치

0

160

1

div에 있는 클래스가 2개이면 어떻게 하나요?

0

368

1

css 셀렉터에 대해 질문이 있습니다.

0

147

1