Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara melaksanakan perangkak tugas berjadual dengan Scrapy

Cara melaksanakan perangkak tugas berjadual dengan Scrapy

王林
王林asal
2023-06-22 12:54:562859semak imbas

Dengan perkembangan Internet, perangkak web digunakan secara meluas untuk pengumpulan dan analisis data. Scrapy ialah rangka kerja perangkak yang biasa digunakan yang menyediakan fungsi berkuasa dan keupayaan pemprosesan yang cekap. Untuk senario perniagaan yang memerlukan rangkak data yang kerap, bagaimanakah Scrapy melaksanakan perangkak tugas berjadual? Artikel ini akan memperkenalkan kaedah Scrapy untuk melaksanakan perangkak tugas berjadual dan memberikan contoh.

1. Cara melaksanakan tugas berjadual Scrapy

Scrapy ialah rangka kerja perangkak yang dibangunkan berdasarkan tugasan berjadual Python boleh dilaksanakan melalui alat tugas berjadual Python - APScheduler. APScheduler ialah rangka kerja tugas berjadual ringan yang menyokong pelbagai pencetus dan penjadual tugas. Dalam rangka kerja Scrapy, melaksanakan tugas berjadual melalui APScheduler agak mudah dan mudah diselenggara.

2. Langkah khusus untuk melaksanakan tugas berjadual Scrapy

  1. Pasang pakej APScheduler

Gunakan pip untuk memasang pakej APScheduler dalam persekitaran Scrapy dan laksanakan arahan berikut Itu sahaja:

pip install apscheduler
  1. Buat tugas berjadual

Tambah kod berikut dalam fail settings.py projek Scrapy:

# 配置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,
}

Dalam kod di atas, kami Mengkonfigurasi parameter berkaitan APScheduler dan menetapkan selang masa kepada 3600 saat, yang bermaksud bahawa tugas perangkak akan dilaksanakan setiap jam.

  1. Menulis tugas perangkak

Seterusnya, kita boleh mula menulis tugas perangkak tertentu. Kami masih menambah kod berikut pada fail settings.py dalam projek Scrapy:

from scrapy_apscheduler.jobstores import DjangoJobStore

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

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

Dalam kod di atas, kami menentukan tugas perangkak dengan masa pelaksanaan 14:30. Kita perlu mengubah suai kandungan dalam JOBS mengikut keperluan kita sendiri. Parameter func menentukan tugas perangkak yang akan dilaksanakan Contohnya, dalam contoh di atas, cuma gantikan nama perangkak dengan nama perangkak anda sendiri.

  1. Mulakan tugas berjadual Scrapy

Akhir sekali, masukkan kod berikut ke dalam skrip permulaan projek Scrapy:

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

scheduler = Scheduler()
scheduler.start()

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

scheduler.shutdown()

Dalam kod di atas, kami memperkenalkan Penjadual untuk tugas berjadual Scrapy, memulakan penjadual sebelum melaksanakan tugas perangkak dan menutup penjadual selepas pelaksanaan.

3. Analisis Kes

Berikut ialah contoh maklumat ramalan cuaca merangkak dan mengemas kininya dengan kerap.

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)

Selepas menulis fail perangkak, ikut langkah untuk melaksanakan tugas berjadual Scrapy dan mengkonfigurasi tugasan dan skrip tugas berjadual dalam settings.py.

4. Ringkasan

Sebagai rangka kerja perangkak yang cekap dan boleh dipercayai, Scrapy agak mudah untuk melaksanakan perangkak tugas berjadual. Melalui alat APScheduler, kami boleh menjadualkan tugas berjadual dan mencapai kemas kini dan ketekunan data. Dalam senario perniagaan sebenar, perangkak tugas berjadual Scrapy digunakan secara meluas, memberikan sokongan kukuh untuk analisis data perusahaan dan pembangunan aplikasi.

Atas ialah kandungan terperinci Cara melaksanakan perangkak tugas berjadual dengan Scrapy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn