インターネットの発展に伴い、Web クローラーはデータ収集と分析に広く使用されています。 Scrapy は、強力な機能と効率的な処理機能を提供する、一般的に使用されるクローラー フレームワークです。データの定期的なクロールが必要なビジネス シナリオの場合、Scrapy はスケジュールされたタスク クローラーをどのように実装しますか?この記事では、スケジュールされたタスク クローラーを実装する Scrapy の方法を紹介し、例を示します。
1. Scrapy スケジュール タスクの実装方法
Scrapy は Python に基づいて開発されたクローラー フレームワークであり、スケジュール タスクは Python のスケジュール タスク ツール APScheduler を通じて実装できます。 APScheduler は、複数のタスク トリガーとスケジューラをサポートする軽量のスケジュールされたタスク フレームワークです。 Scrapy フレームワークでは、APScheduler を介してスケジュールされたタスクを実装するのは比較的シンプルで、保守も簡単です。
2. Scrapy スケジュールされたタスクを実装するための具体的な手順
pip を使用して Scrapy 環境に APScheduler パッケージをインストールし、実行します次のコマンドで完了です:
pip install apscheduler
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 時間ごとに実行されることを意味します。
次に、特定のクローラ タスクの作成を開始できます。さらに、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 パラメータは、実行されるクローラ タスクを指定します。たとえば、上記の例では、クローラ名を独自のクローラ名に置き換えるだけです。
最後に、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 中国語 Web サイトの他の関連記事を参照してください。