>  기사  >  백엔드 개발  >  새로운 크롤러를 위한 필독서: Scrapy 시작 가이드

새로운 크롤러를 위한 필독서: Scrapy 시작 가이드

王林
王林원래의
2023-06-22 09:05:511716검색

데이터 수집 측면에서 웹 크롤러는 필수적인 도구가 되었습니다. 그러나 웹 스크래핑 기술을 처음 배우고 익히는 사람들에게는 올바른 도구와 프레임워크를 선택하는 것이 혼란스러울 수 있습니다. 많은 웹 크롤링 도구 중에서 Scrapy는 매우 인기 있는 도구입니다. Scrapy는 데이터 처리 및 추출에 대한 유연한 접근 방식을 제공하는 오픈 소스 Python 프레임워크입니다.

이 글에서는 Scrapy의 기본 사항을 소개하고 Scrapy에서 간단한 웹 크롤러를 구축하는 방법을 설명하겠습니다.

1. Scrapy 시작 가이드

  1. Scrapy 설치

시작하기 전에 먼저 Scrapy를 설치해야 합니다. Scrapy 설치는 매우 간단합니다. 명령줄에서 다음 명령을 실행하면 됩니다.

pip install scrapy
  1. Scrapy 프로젝트 만들기

Scrapy 프로젝트를 만들 때 다음 명령을 사용할 수 있습니다.

scrapy startproject <project_name>

이렇게 하면 Scrapy가 생성됩니다. 현재 디렉터리에 4fc59f85b86f3cdcf539b23b3b2209e3이라는 폴더를 만들고 여기에 필요한 파일과 폴더를 만듭니다.

  1. Create Spider

Scrapy에서 Spider는 데이터를 크롤링하는 데 사용하는 주요 구성 요소입니다. Spider는 URL 요청을 시작하는 방법, 링크를 따라가는 방법 및 페이지를 구문 분석하는 방법을 정의합니다. Scrapy에서는 다음 명령을 사용하여 Spider를 생성할 수 있습니다:

scrapy genspider <spider_name> <domain_name>

그러면 프로젝트에 새 Spider가 생성되어 spiders 디렉터리에 저장됩니다. Spider를 편집하여 필요한 요청 및 구문 분석 방법을 정의할 수 있습니다.

  1. 크롤링 웹사이트 구성

크롤링 웹사이트를 구성하는 것은 매우 중요합니다. Spider 파일에서 크롤링할 웹사이트 URL과 요청 구성 방법을 정의해야 합니다. Scrapy에서는 start_requests 메소드를 작성하여 이 기능을 구현할 수 있습니다. 이 메소드는 스파이더가 시작되어 특정 URL에서 요청을 보낼 때 호출됩니다.

  1. 페이지 구문 분석

Scrapy에서는 웹 페이지 구문 분석이 가장 중요한 단계입니다. XPath 또는 CSS 선택기를 사용하여 페이지를 구문 분석하여 필요한 데이터를 추출할 수 있습니다. Spider 코드에서는 구문 분석 메소드를 작성하고 위의 도구를 사용하여 페이지를 구문 분석할 수 있습니다.

  1. 데이터 저장

마지막으로 추출된 데이터를 데이터베이스나 파일에 저장해야 합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.