Redis と JavaScript を使用してシンプルな Web クローラーを構築する: データをすばやくクロールする方法
はじめに:
Web クローラーは、インターネットから情報を取得するプログラム ツールであり、Web ページに自動的にアクセスできます。そしてその中のデータを解析します。 Web クローラーを使用すると、大量のデータを迅速にクロールして、データ分析とビジネス上の意思決定をサポートできます。この記事では、Redis と JavaScript を使用して単純な Web クローラーを構築する方法を紹介し、データを迅速にクロールする方法を示します。
const redis = require('redis'); const client = redis.createClient(); // 添加待抓取的URL到队列 const enqueueUrl = (url, priority = 0) => { client.zadd('urls', priority, url); } // 从队列中获取待抓取的URL const dequeueUrl = () => { return new Promise((resolve, reject) => { client.zrange('urls', 0, 0, (err, urls) => { if (err) reject(err); else resolve(urls[0]); }) }) } // 判断URL是否已经被抓取过 const isUrlVisited = (url) => { return new Promise((resolve, reject) => { client.sismember('visited_urls', url, (err, result) => { if (err) reject(err); else resolve(!!result); }) }) } // 将URL标记为已经被抓取过 const markUrlVisited = (url) => { client.sadd('visited_urls', url); }
上記のコードでは、Redis Sorted set と set を使用します。データ構造では、順序付きセット urls
はクロールされる URL の保存に使用され、セット visited_urls
はクロールされた URL の保存に使用されます。
const request = require('request'); const cheerio = require('cheerio'); // 从指定的URL中解析数据 const parseData = (url) => { return new Promise((resolve, reject) => { request(url, (error, response, body) => { if (error) reject(error); else { const $ = cheerio.load(body); // 在这里对页面进行解析,并提取数据 // ... resolve(data); } }) }) } // 爬虫节点的主逻辑 const crawler = async () => { while (true) { const url = await dequeueUrl(); if (!url) break; if (await isUrlVisited(url)) continue; try { const data = await parseData(url); // 在这里将数据存储到Redis中 // ... markUrlVisited(url); } catch (error) { console.error(`Failed to parse data from ${url}`, error); } } } crawler();
上記のコードでは、request# を使用しました。 ## library HTTP リクエストを送信し、
cheerio ライブラリを使用してページを解析します。
parseData 関数では、
cheerio ライブラリを使用してページを解析し、特定のページ構造とデータ抽出要件に従ってデータを抽出できます。クローラー ノードのメイン ロジックでは、ループして Redis キューからクロール対象の URL を取得し、ページの解析とデータ ストレージを実行します。
Redis と JavaScript を利用することで、大量のデータを迅速にクロールするシンプルかつ強力な Web クローラーを構築できます。タスク スケジューラを使用して、クロールする URL を Redis キューに追加し、ページ解析とデータ ストレージのためにクローラー ノードのキューから URL を取得できます。この分散アーキテクチャによりクロール効率が向上し、Redis のデータ ストレージと高性能機能により、大量のデータを簡単に処理できます。
以上がRedis と JavaScript を使用してシンプルな Web クローラーを構築する: データを迅速にクロールする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。