[Python] Scrapy를 이용한 크롤링 맛보기

4308 단어 pythonpython

한창 크롤링에 관심이 생겨서 Selenium과 BeautifulSoup로 크롤링을 해오다가

Scrapy를 이용해 크롤링을 해보았다.

우선, CLI 환경과 IDE 모두에서 같은 결과의 크롤링이 가능하다는 점이 흥미로웠고

속도나 옵션의 측면에서도 Scrapy가 뛰어났던 것 같다.

Scrapy의 연습을 위해 "quotes.toscrape.com" 사이트를 크롤링해보자.


소스 코드를 통한 Spider 작성

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
        'http://quotes.toscrape.com/page/2/',
    ]

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get().replace('\u201d','').replace("\u201c",''),
                'author': quote.css('small.author::text').get(),
                'tags': quote.css('div.tags a.tag::text').getall(),
            }

이 포스트에서는 정확히 Spider가 무엇인지, Scrapy의 기본 세팅과 환경 설정 방법은 어떻게 하는지는

별도로 서술하지 않고 코드만 같이 보도록 하겠다.

당연하게도, Scrapy를 사용하기 위해 import scrapy를 해주었고,

start_urls 변수에 내가 크롤링하고 싶은 웹사이트의 주소를 기입하고

해당 데이터를 파싱하는 parse 함수를 정의해주면 끝난다.

quote.css 구문 같은 경우에는 간단하게 설명하자면 css 문법에 따라

해당 HTML 문서의 Elements를 인식하는 그런 함수다.

후에 알게 된 사실이지만, replace 함수를 통해서 유니코드 에러를 제거해주었는데,

그냥 출력 결과물의 인코딩 타입만 바꿔주면 해결되는 문제였다 ^

이상 결과보면서 포스팅 마치도록 하겠다.


  • 결과

좋은 웹페이지 즐겨찾기