Node.js と Redis を使用して Web クローラーを構築する: データを効率的にスクレイピングする方法
Node.js と Redis を使用した Web クローラーの構築: データを効率的にクロールする方法
今日の情報爆発の時代では、多くの場合、インターネットから大量のデータを取得する必要があります。 Web クローラーの役割は、Web ページからデータを自動的にクロールすることです。この記事では、Node.js と Redis を使用して効率的な Web クローラーを構築する方法をコード例とともに紹介します。
1. Node.js の概要
Node.js は、Chrome V8 エンジンに基づく JavaScript 実行環境であり、独自のアプリケーションに JavaScript インタープリターを埋め込んで、新しいプログラミング パラダイムを形成します。 Node.js はイベント駆動型のノンブロッキング I/O モデルを採用しているため、同時実行性の高い I/O 集中型アプリケーションの処理に非常に適しています。
2. Redis の概要
Redis は、オープン ソースのメモリ内データ構造ストレージ システムであり、キャッシュ、メッセージ キュー、データ統計などのシナリオで広く使用されています。 Redis は、文字列、ハッシュ、リスト、セット、順序付きセットなどの特殊なデータ構造と、いくつかの一般的な操作コマンドを提供します。 Redis はデータをメモリに保存することで、データ アクセスの速度を大幅に向上させることができます。
3. 準備作業
Web クローラーの構築を開始する前に、いくつかの準備作業を行う必要があります。まず、Node.js と Redis をインストールする必要があります。次に、request
や cheerio
など、Node.js の依存モジュールをいくつかインストールする必要があります。
npm install request cheerio --save
4. Web クローラーを構築する
最初に、クローラー ロジックをカプセル化する Crawler
クラスを定義します。このクラスでは、request
モジュールを使用して HTTP リクエストを送信し、cheerio
モジュールを使用して HTML コードを解析します。
const request = require('request'); const cheerio = require('cheerio'); class Crawler { constructor(url) { this.url = url; } getData(callback) { request(this.url, (error, response, body) => { if (!error && response.statusCode === 200) { const $ = cheerio.load(body); // 解析HTML代码,获取数据 // ... callback(data); } else { callback(null); } }); } }
次に、Crawler
オブジェクトをインスタンス化し、getData
メソッドを呼び出してデータを取得します。
const crawler = new Crawler('http://www.example.com'); crawler.getData((data) => { if (data) { console.log(data); } else { console.log('获取数据失败'); } });
5. データ キャッシュに Redis を使用する
実際のクローラー アプリケーションでは、リクエストの繰り返しを避けるために、キャプチャされたデータをキャッシュする必要があることがよくあります。このとき、Redis は重要な役割を果たします。 Redis の set
および get
コマンドを使用して、それぞれデータを保存および取得できます。
まず、redis
モジュールをインストールする必要があります。
npm install redis --save
次に、Crawler
クラスに redis
モジュールを導入し、データ キャッシュ機能を実装します。
const redis = require('redis'); const client = redis.createClient(); class Crawler { constructor(url) { this.url = url; } getData(callback) { client.get(this.url, (err, reply) => { if (reply) { console.log('从缓存中获取数据'); callback(JSON.parse(reply)); } else { request(this.url, (error, response, body) => { if (!error && response.statusCode === 200) { const $ = cheerio.load(body); // 解析HTML代码,获取数据 // ... // 将数据保存到缓存中 client.set(this.url, JSON.stringify(data)); callback(data); } else { callback(null); } }); } }); } }
Redis をデータ キャッシュに使用することで、クローラーの効率を大幅に向上させることができます。同じ Web ページを繰り返しクロールする場合、HTTP リクエストを再度送信することなく、キャッシュからデータを直接取得できます。
6. 概要
この記事では、Node.js と Redis を使用して効率的な Web クローラーを構築する方法を紹介しました。まず、Node.js の request
モジュールと cheerio
モジュールを使用して、HTTP リクエストを送信し、HTML コードを解析します。次に、データ キャッシュに Redis を使用することで、リクエストの繰り返しを回避し、クローラーの効率を向上させることができます。
この記事を学ぶことで、読者が Node.js と Redis を使用して Web クローラーを構築する方法を習得し、実際のニーズに応じて拡張および最適化できるようになることを願っています。
以上がNode.js と Redis を使用して Web クローラーを構築する: データを効率的にスクレイピングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











1. [スタート]メニューを起動し、[cmd]と入力し、[コマンドプロンプト]を右クリックし、[管理者として実行]を選択します。 2. 次のコマンドを順番に入力します (注意してコピーして貼り付けてください): SCconfigwuauservstart=auto、Enter キーを押す SCconfigbitsstart=auto、Enter キーを押す SCconfigcryptsvcstart=auto、Enter キーを押す SCconfigtrustedinstallerstart=auto、Enter キーを押す SCconfigwuauservtype=share、Enter キーを押す netstopwuauserv 、enter netstopcryptS を押す

GolangAPI のキャッシュ戦略により、パフォーマンスが向上し、サーバーの負荷が軽減されます。一般的に使用される戦略は、LRU、LFU、FIFO、TTL です。最適化手法には、適切なキャッシュ ストレージの選択、階層型キャッシュ、無効化管理、監視とチューニングが含まれます。実際には、データベースからユーザー情報を取得する API を最適化するために LRU キャッシュが使用されます。それ以外の場合は、データベースからデータを取得した後にキャッシュを更新できます。

PHP 開発では、キャッシュ メカニズムにより、頻繁にアクセスされるデータがメモリまたはディスクに一時的に保存され、データベース アクセスの数が削減され、パフォーマンスが向上します。キャッシュの種類には主にメモリ、ファイル、データベース キャッシュが含まれます。キャッシュは、組み込み関数またはサードパーティのライブラリ (cache_get() や Memcache など) を使用して PHP に実装できます。一般的な実用的なアプリケーションには、データベース クエリ結果をキャッシュしてクエリ パフォーマンスを最適化したり、ページ出力をキャッシュしてレンダリングを高速化したりすることが含まれます。キャッシュ メカニズムにより、Web サイトの応答速度が効果的に向上し、ユーザー エクスペリエンスが向上し、サーバーの負荷が軽減されます。

Redis キャッシュを使用すると、PHP 配列ページングのパフォーマンスを大幅に最適化できます。これは、次の手順で実現できます。 Redis クライアントをインストールします。 Redisサーバーに接続します。キャッシュ データを作成し、データの各ページをキー「page:{page_number}」を持つ Redis ハッシュに保存します。キャッシュからデータを取得し、大規模な配列での高コストの操作を回避します。

まず、システム言語を簡体字中国語表示に設定して再起動する必要があります。もちろん、以前に表示言語を簡体字中国語に変更したことがある場合は、この手順をスキップできます。次に、レジストリ regedit.exe の操作を開始し、左側のナビゲーション バーまたは上部のアドレス バーで HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage に直接移動し、InstallLanguage キーの値と Default キーの値を 0804 に変更します (英語に変更する場合)。まずシステムの表示言語を en-us に設定し、システムを再起動してから、すべてを 0409 に変更します) この時点でシステムを再起動する必要があります。

1. まず、デスクトップ上の[このPC]アイコンをダブルクリックして開きます。 2. 次に、マウスの左ボタンをダブルクリックして [C ドライブ] に入ります。システム ファイルは通常、自動的に C ドライブに保存されます。 3. 次に、C ドライブで [windows] フォルダーを見つけ、ダブルクリックしてに入ります。 4. [windows]フォルダーに入ったら、[SoftwareDistribution]フォルダーを見つけます。 5. 入力後、win11 のダウンロード ファイルとアップデート ファイルがすべて含まれている [ダウンロード] フォルダーを見つけます。 6. これらのファイルを削除したい場合は、このフォルダー内で直接削除してください。

Redis は、高性能のキー/値キャッシュです。 PHPRedis 拡張機能は、Redis サーバーと対話するための API を提供します。 Redis に接続し、データを保存および取得するには、次の手順を使用します。 接続: Redis クラスを使用してサーバーに接続します。ストレージ: set メソッドを使用してキーと値のペアを設定します。取得: get メソッドを使用してキーの値を取得します。

さまざまな PHP バージョンで関数のパフォーマンスを最適化する方法には、分析ツールを使用して関数のボトルネックを特定すること、オペコード キャッシュを有効にするか外部キャッシュ システムを使用すること、型アノテーションを追加してパフォーマンスを向上させること、および PHP バージョンに応じて適切な文字列連結およびソート アルゴリズムを選択することなどが含まれます。
