데이터 수집 측면에서 웹 크롤러는 필수적인 도구가 되었습니다. 그러나 웹 스크래핑 기술을 처음 배우고 익히는 사람들에게는 올바른 도구와 프레임워크를 선택하는 것이 혼란스러울 수 있습니다. 많은 웹 크롤링 도구 중에서 Scrapy는 매우 인기 있는 도구입니다. Scrapy는 데이터 처리 및 추출에 대한 유연한 접근 방식을 제공하는 오픈 소스 Python 프레임워크입니다.
이 글에서는 Scrapy의 기본 사항을 소개하고 Scrapy에서 간단한 웹 크롤러를 구축하는 방법을 설명하겠습니다.
1. Scrapy 시작 가이드
시작하기 전에 먼저 Scrapy를 설치해야 합니다. Scrapy 설치는 매우 간단합니다. 명령줄에서 다음 명령을 실행하면 됩니다.
pip install scrapy
Scrapy 프로젝트를 만들 때 다음 명령을 사용할 수 있습니다.
scrapy startproject <project_name>
이렇게 하면 Scrapy가 생성됩니다. 현재 디렉터리에 4fc59f85b86f3cdcf539b23b3b2209e3이라는 폴더를 만들고 여기에 필요한 파일과 폴더를 만듭니다.
Scrapy에서 Spider는 데이터를 크롤링하는 데 사용하는 주요 구성 요소입니다. Spider는 URL 요청을 시작하는 방법, 링크를 따라가는 방법 및 페이지를 구문 분석하는 방법을 정의합니다. Scrapy에서는 다음 명령을 사용하여 Spider를 생성할 수 있습니다:
scrapy genspider <spider_name> <domain_name>
그러면 프로젝트에 새 Spider가 생성되어 spiders 디렉터리에 저장됩니다. Spider를 편집하여 필요한 요청 및 구문 분석 방법을 정의할 수 있습니다.
크롤링 웹사이트를 구성하는 것은 매우 중요합니다. Spider 파일에서 크롤링할 웹사이트 URL과 요청 구성 방법을 정의해야 합니다. Scrapy에서는 start_requests 메소드를 작성하여 이 기능을 구현할 수 있습니다. 이 메소드는 스파이더가 시작되어 특정 URL에서 요청을 보낼 때 호출됩니다.
Scrapy에서는 웹 페이지 구문 분석이 가장 중요한 단계입니다. XPath 또는 CSS 선택기를 사용하여 페이지를 구문 분석하여 필요한 데이터를 추출할 수 있습니다. Spider 코드에서는 구문 분석 메소드를 작성하고 위의 도구를 사용하여 페이지를 구문 분석할 수 있습니다.
마지막으로 추출된 데이터를 데이터베이스나 파일에 저장해야 합니다. Scrapy에서는 파이프라인을 사용하여 이 작업을 수행할 수 있습니다. 파이프라인은 데이터 처리를 위한 메커니즘으로, 데이터 정리, 필터링, 변환, 저장, 출력 등을 위한 특정 방법을 정의합니다.
2. 간단한 예
이제 간단한 Spider를 작성하고 Scrapy를 사용하여 Top 250 Douban 영화의 데이터를 가져옵니다. 먼저 명령줄에서 다음 명령을 사용하여 새 프로젝트를 만듭니다.
scrapy startproject tutorial
튜토리얼 폴더로 이동하여 douban_spider라는 이름의 Spider를 만듭니다.
scrapy genspider douban_spider movie.douban.com
다음으로 페이지를 요청하고 웹 페이지를 구문 분석하도록 스파이더를 구성해야 합니다. Spider 파일에 다음 코드를 추가합니다.
import scrapy class DoubanSpider(scrapy.Spider): name = "douban" allowed_domains = ["movie.douban.com"] start_urls = [ "https://movie.douban.com/top250" ] def parse(self, response): for sel in response.xpath('//div[@class="info"]'): title = sel.xpath('div[@class="hd"]/a/span/text()').extract() yield {'title': title}
위 코드에서는 먼저 Spider의 이름과 크롤링된 웹사이트의 도메인 이름을 정의합니다. 다음으로, 크롤링하려는 URL을 정의하고 페이지를 구문 분석하고 필요한 데이터를 추출하는 구문 분석 메서드를 작성했습니다.
클래스 속성이 "info"인 각 요소에 대해 XPath를 사용하여 영화 제목이 포함된 요소를 추출하고 Yield 키워드를 사용하여 이러한 요소를 반환합니다.
마지막으로 추출된 데이터를 저장해야 합니다. 추출된 데이터를 처리하고 저장하기 위해 새로운 파이프라인을 생성할 수 있습니다. 다음은 추출된 데이터를 JSON 파일에 저장하는 간단한 파이프라인입니다.
import json class TutorialPipeline(object): def __init__(self): self.file = open('douban_top250.json', 'w') def process_item(self, item, spider): line = json.dumps(dict(item)) + " " self.file.write(line) return item def spider_closed(self, spider): self.file.close()
마지막으로 settings.py에서 파이프라인을 구성해야 합니다. ITEM_PIPELINES에 다음 코드를 추가하기만 하면 됩니다.
ITEM_PIPELINES = { 'tutorial.pipelines.TutorialPipeline': 100, }
이제 간단한 Scrapy Spider를 작성했으며 다음 명령을 실행하여 시작할 수 있습니다.
scrapy crawl douban
명령을 실행한 후 Scrapy는 페이지 요청을 시작하고 데이터를 구문 분석합니다. 추출된 데이터는 JSON 파일로 저장됩니다.
3. 결론
Scrapy는 매우 유연하고 강력한 웹 크롤러 프레임워크입니다. Scrapy를 사용하면 효율적이고 확장 가능한 웹 크롤러를 쉽게 구축하고 필요한 데이터를 추출할 수 있습니다. 이 글에서는 웹 크롤러를 배우는 초보자에게 도움이 되기를 바라며 Scrapy의 기본 사항을 소개하고 간단한 예를 제공합니다.
위 내용은 새로운 크롤러를 위한 필독서: Scrapy 시작 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!