>  기사  >  백엔드 개발  >  Scrapy를 사용하여 예약된 작업 크롤러를 구현하는 방법

Scrapy를 사용하여 예약된 작업 크롤러를 구현하는 방법

王林
王林원래의
2023-06-22 12:54:562865검색

인터넷의 발달과 함께 데이터 수집 및 분석을 위해 웹 크롤러가 널리 사용됩니다. Scrapy는 강력한 기능과 효율적인 처리 기능을 제공하는 일반적으로 사용되는 크롤러 프레임워크입니다. 정기적인 데이터 크롤링이 필요한 비즈니스 시나리오의 경우 Scrapy는 예약된 작업 크롤러를 어떻게 구현합니까? 이 기사에서는 예약된 작업 크롤러를 구현하는 Scrapy의 방법을 소개하고 예제를 제공합니다.

1. Scrapy 예약 작업 구현 방법

Scrapy는 Python을 기반으로 개발된 크롤러 프레임워크입니다. 예약 작업은 Python의 예약 작업 도구인 APScheduler를 통해 구현할 수 있습니다. APScheduler는 여러 작업 트리거 및 스케줄러를 지원하는 경량 예약 작업 프레임워크입니다. Scrapy 프레임워크에서 APScheduler를 통해 예약된 작업을 구현하는 것은 상대적으로 간단하고 유지 관리가 쉽습니다.

2. Scrapy 예약 작업을 구현하는 특정 단계

  1. APScheduler 패키지 설치

pip를 사용하여 Scrapy 환경에 APScheduler 패키지를 설치하고 다음 명령을 실행하세요.

pip install apscheduler
  1. 예약 작업 만들기

Scrapy 프로젝트에서 settings.py 파일에 다음 코드를 추가합니다.

# 配置APScheduler

SCHEDULER = "scrapy_apscheduler.schedulers.Scheduler"

# 启用持久化
SCHEDULER_PERSIST = True

# 任务调度器
SCHEDULER_JOBSTORES = {
    'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')
}

# 调度器时间间隔
SCHEDULER_EXECUTORS = {
    'default': {'type': 'threadpool', 'max_workers': 20},
    'processpool': ProcessPoolExecutor(5)
}

# 任务触发器
SCHEDULER_TRIGGER = 'interval'

# 时间间隔
SCHEDULER_SECONDS = 3600

# 启用定时任务扩展
EXTENSIONS = {
    'scrapy_apscheduler.extension.SchedulerExtension': 500,
}

위 코드에서는 APScheduler 관련 매개변수를 구성하고 시간 간격을 3600초로 설정했습니다. 이는 크롤러 작업이 1시간에 한 번씩 실행된다는 의미입니다.

  1. 크롤러 작업 작성

다음으로 특정 크롤러 작업 작성을 시작할 수 있습니다. 여전히 Scrapy 프로젝트의 settings.py 파일에 다음 코드를 추가합니다.

from scrapy_apscheduler.jobstores import DjangoJobStore

# 配置定时任务
JOBS = [
    {
        'id': 'task1',
        'func': '项目名称.spiders.爬虫名称',
        'args': None,
        'trigger': {
            'type': 'cron',
            ‘hour’: ’14',
            ‘minute’: ’30'
        },
    }
]

# 配置任务存储
SCHEDULER_JOBSTORES = {
    'default': DjangoJobStore(),
}

위 코드에서는 실행 시간이 14:30인 크롤러 작업을 지정합니다. 우리는 필요에 따라 JOBS의 콘텐츠를 수정해야 합니다. func 매개변수는 실행할 크롤러 작업을 지정합니다. 예를 들어 위 예에서는 크롤러 이름을 사용자 고유의 크롤러 이름으로 바꾸면 됩니다.

  1. Scrapy 예약 작업 시작

마지막으로 Scrapy 프로젝트의 시작 스크립트에 다음 코드를 도입합니다.

from scrapy.cmdline import execute
from scrapy_apscheduler.scheduler import Scheduler

scheduler = Scheduler()
scheduler.start()

execute(['scrapy', 'crawl', '爬虫名称'])

scheduler.shutdown()

위 코드에서는 Scrapy 예약 작업의 스케줄러를 도입하고 실행하기 전에 스케줄러를 시작했습니다. 크롤러 작업, 실행 후 스케줄러를 닫습니다.

3. 사례 분석

다음은 일기예보 정보를 크롤링하고 정기적으로 업데이트하는 예입니다.

import scrapy
import json

class WeatherSpider(scrapy.Spider):
    name = "weather"
    allow_domains = ["tianqi.com"]
    start_urls = ["http://www.tianqi.com/"]
    
    def parse(self, response):
        # 爬取天气预报信息
        weather_info = {"city": "chengdu", "temperature": "25C", "condition": "sun"}
        yield weather_info
        
        # 更新天气预报信息
        with open("weather_file.txt", "w") as f:
            json.dump(weather_info, f)

크롤러 파일을 작성한 후 단계에 따라 Scrapy 예약 작업을 구현하고 settings.py에서 작업 및 예약 작업 스크립트를 구성합니다.

4. 요약

Scrapy는 효율적이고 안정적인 크롤러 프레임워크이며 예약된 작업 크롤러를 구현하는 것이 비교적 간단합니다. APScheduler 도구를 통해 예약된 작업을 예약하고 데이터 업데이트 및 지속성을 달성할 수 있습니다. 실제 비즈니스 시나리오에서는 Scrapy 예약 작업 크롤러가 널리 사용되어 기업 데이터 분석 및 애플리케이션 개발을 강력하게 지원합니다.

위 내용은 Scrapy를 사용하여 예약된 작업 크롤러를 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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