Redis 및 JavaScript를 사용하여 간단한 웹 크롤러 구축: 데이터를 빠르게 크롤링하는 방법
소개:
웹 크롤러는 인터넷에서 정보를 자동으로 가져오고 웹 페이지에 있는 데이터를 구문 분석할 수 있는 프로그램 도구입니다. 웹 크롤러를 사용하면 대량의 데이터를 신속하게 크롤링하여 데이터 분석 및 비즈니스 결정을 지원할 수 있습니다. 이 기사에서는 Redis와 JavaScript를 사용하여 간단한 웹 크롤러를 구축하는 방법을 소개하고 데이터를 빠르게 크롤링하는 방법을 보여줍니다.
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의 Ordered Set 및 Set 데이터 구조를 사용하며, Ordered Set urls code>는 크롤링할 URL을 저장하는 데 사용되며 <code>visited_urls
컬렉션은 크롤링된 URL을 저장하는 데 사용됩니다. 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
库发送HTTP请求,使用cheerio
库解析页面。在parseData
函数中,我们可以根据具体的页面结构和数据提取需求,使用cheerio
크롤러 노드의 코드 예시는 다음과 같습니다.
request
라이브러리를 사용하여 HTTP를 보냅니다. 요청이 있으면 parseData
함수에서 cheerio
라이브러리를 사용하여 페이지를 구문 분석하고 특정 페이지 구조 및 데이터 추출 요구 사항에 따라 데이터를 추출할 수 있습니다. 크롤러 노드의 기본 논리에서는 Redis 대기열에서 크롤링할 URL을 얻기 위해 루프를 수행하고 페이지 구문 분석 및 데이터 저장을 수행합니다. 🎜🎜요약: 🎜Redis와 JavaScript를 활용하면 간단하지만 강력한 웹 크롤러를 구축하여 대량의 데이터를 빠르게 크롤링할 수 있습니다. 작업 스케줄러를 사용하여 크롤링할 URL을 Redis 대기열에 추가하고 페이지 구문 분석 및 데이터 저장을 위해 크롤러 노드의 대기열에서 URL을 얻을 수 있습니다. 이러한 분산 아키텍처는 크롤링 효율성을 향상시킬 수 있으며, Redis의 데이터 저장 및 고성능 기능을 통해 대용량 데이터를 쉽게 처리할 수 있습니다. 🎜위 내용은 Redis와 JavaScript를 사용하여 간단한 웹 크롤러 구축: 데이터를 빠르게 크롤링하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!