[파이썬] Scrapy 다국어 웹사이트 크롤링

이번 글에서는 Scrapy를 사용하여 다국어 웹사이트를 크롤링하는 방법에 대해 알아보겠습니다.

Scrapy란?

Scrapy는 파이썬 기반의 웹 크롤링 프레임워크로, 다양한 웹사이트에서 데이터를 수집하고 처리하는 강력한 도구입니다. Scrapy는 다른 웹 스크레이핑 도구에 비해 높은 성능과 확장성을 제공하며, 비동기 네트워크 요청, 자동화된 데이터 추출 등의 기능을 제공합니다.

다국어 웹사이트 크롤링

Scrapy를 사용하여 다국어 웹사이트를 크롤링하는 것은 비교적 간단합니다. 하지만 몇 가지 고려해야 할 사항이 있습니다.

1. 언어 설정

다국어 웹사이트는 각 언어에 해당하는 페이지를 가지고 있을 수 있습니다. 이를 위해서는 Scrapy 설정 파일(settings.py)에서 DEFAULT_REQUEST_HEADERSAccept-Language 헤더를 설정해야 합니다. 예를 들어, 한국어와 영어를 지원하는 웹사이트에서 크롤링하기 위해서는 다음과 같이 설정합니다.

DEFAULT_REQUEST_HEADERS = {
    'Accept-Language': 'ko-KR,ko;q=0.9,en-US,en;q=0.7'
}

2. 다국어 문자열 처리

다국어 웹사이트에서 가져온 문자열은 해당 언어의 문자로 인코딩되어 있을 수 있으며, 이를 올바르게 처리해야 합니다. Scrapy는 문자열 처리를 위한 내장된 기능을 제공하므로 별도의 작업 없이 문자열을 적절히 다룰 수 있습니다.

3. URL 변환

다국어 웹사이트에서는 각 언어의 버전에 대한 URL 패턴이 다를 수 있습니다. 예를 들어, 한국어는 www.example.com/ko/와 같은 패턴을 가질 수 있고, 영어는 www.example.com/en/와 같은 패턴을 가질 수 있습니다. 크롤링할 때는 언어에 따라 URL을 변환해야 합니다. 이를 위해 Scrapy에서는 URL을 동적으로 생성할 수 있는 기능을 제공합니다.

def start_requests(self):
    languages = ['ko', 'en']
    for lang in languages:
        url = f'http://www.example.com/{lang}/'
        yield scrapy.Request(url = url, callback = self.parse)

4. 다국어 데이터 추출

크롤링한 다국어 웹사이트에서 원하는 데이터를 추출하기 위해서는 XPath나 CSS 선택자를 사용하여 적절한 요소를 선택해야 합니다. Scrapy에서는 response.xpath() 또는 response.css() 메서드를 사용하여 데이터를 선택하고 추출할 수 있습니다.

예를 들어, 제목과 내용을 크롤링한다고 가정해 보겠습니다.

def parse(self, response):
    title = response.xpath('//h1/text()').get()
    content = response.css('.content::text').get()
    
    yield {
        'title': title,
        'content': content
    }
}

결론

Scrapy를 사용하여 다국어 웹사이트를 크롤링하는 것은 상대적으로 간단하지만 몇 가지 주의해야 할 사항이 있습니다. 적절한 언어 설정, 문자열 처리, URL 변환 및 데이터 추출을 통해 다국어 웹사이트에서 필요한 데이터를 성공적으로 수집할 수 있습니다. Scrapy의 강력한 기능을 활용하여 다국어 데이터 크롤링을 자유롭게 수행할 수 있습니다.

Happy crawling!