크롤러는 웹 페이지에서 데이터를 자동으로 가져올 수 있는 프로그램으로, 다양한 유용한 정보를 수집하고 분석하는 데 도움을 줄 수 있습니다. 이 기사에서는 몇 단계만으로 node.js에서 간단한 크롤러를 작성하는 방법을 보여줍니다.
1. node.js 및 npm 설치
node.js는 Chrome V8 엔진을 기반으로 하는 JavaScript 런타임 환경으로 서버 측에서 JavaScript 코드를 실행할 수 있습니다. npm은 node.js의 패키지 관리자로 다양한 node.js 모듈을 쉽게 설치하고 관리할 수 있습니다.
node.js 및 npm을 설치하려면 https://nodejs.org/를 방문하여 npm을 자동으로 포함하는 최신 버전의 node.js를 다운로드하고 설치할 수 있습니다. 다른 방법을 사용하여 설치할 수도 있습니다. 자세한 내용은 https://nodejs.org/en/download/package-manager/를 참조하십시오.
설치가 완료되면 명령줄에 다음 명령을 입력하여 설치 성공 여부를 확인할 수 있습니다.
bash
node -v
npm -v
해당 버전 번호가 보이면 node.js와 npm을 성공적으로 설치한 것입니다.
2. 프로젝트 폴더 및 파일 생성
다음으로 크롤러 코드를 보관할 프로젝트 폴더를 만들어야 합니다. 바탕화면에 크롤러라는 폴더를 생성하는 등 어디서든 폴더를 생성할 수 있습니다.
이 폴더에 index.js 라는 파일을 만듭니다 . 이 파일은 크롤러 기본 프로그램입니다. VS Code, Sublime Text, Notepad++ 등과 같은 텍스트 편집기를 사용하여 이 파일을 작성할 수 있습니다.
그런 다음 이 폴더에서 초기화 프로젝트를 실행하고 npm init
프롬프트에 따라 일부 프로젝트 관련 정보를 입력하면(Enter 키를 끝까지 누를 수 있음) 프로젝트가 빌드됩니다.
3. request 및 cheerio 모듈 설치
크롤러가 HTTP 요청을 보내고 HTML 문서를 구문 분석하려면 두 가지 매우 유용한 node.js 모듈인 request 및 cheerio를 사용해야 합니다.
request는 다양한 HTTP 요청을 쉽게 보내고 응답 데이터를 얻을 수 있는 간단한 HTTP 클라이언트입니다.
cheerio는 HTML 요소를 쉽게 조작하고 추출할 수 있는 경량 jQuery 구현입니다.
이 두 모듈을 설치하려면 명령줄에서 프로젝트 폴더로 이동하여 다음 명령을 입력해야 합니다.
npm install request cheerio --save
이를 통해 request 및 cheerio 모듈이 다운로드되어 프로젝트 폴더의 node_modules 폴더에 저장되고 package.json 파일에 기록됩니다.
4. 크롤러 코드 작성
이제 크롤러 코드 작성을 시작할 수 있습니다. 먼저 index.js 파일에 request 및 cheerio 모듈을 도입해야 합니다.
const request = require('request');
const cheerio = require('cheerio');
그런 다음 데이터를 크롤링하려는 웹페이지의 주소인 대상 URL을 정의해야 합니다. 예를 들어 Baidu 백과사전에서 node.js에 대한 항목 페이지를 크롤링하려고 합니다.
const url = 'https://news.baidu.com/';
다음으로 요청 모듈을 사용하여 이 URL에 GET 요청을 보내고 응답 데이터를 가져와야 합니다. 예를 들어 웹 페이지의 제목, 초록 및 본문 내용을 추출하여 인쇄하려고 합니다.
request(url, function (error, response, body) {
// 如果请求成功且状态码为 200
if (!error && response.statusCode == 200) {
// 使用 cheerio 加载 HTML 文档
const $ = cheerio.load(body);
// 存储获取到的数据
const totalData = []
// 获取hotnews下全部的li元素
$('.hotnews').find('ul').find('li').each(function (index, value){
// 向数组中存放数据
totalData.push({
title: $(value).find('strong').find('a').text(),
href: $(value).find('strong').find('a').attr('href')
})
})
// 打印结果
console.log(totalData)
}
});
어떤 클래스의 내용을 가져와야 합니다. $ 기호를 통해 얻을 수 있습니다. 페이지의 DOM 구조는 다음과 같습니다.
다음으로 데이터를 json 파일에 씁니다.
노드에서 제공하는 fs 모듈 가져오기
const fs = require('fs')
수동으로 data.json 파일을 생성하고 그 안에 데이터 저장
// 创建存储数据的函数,在打印totalData处调用该函数
function writeFs(totalData){
fs.writeFile('./data.json', JSON.stringify(totalData), function (err, data) {
if (err) {
throw err
}
console.log('数据保存成功');
})
}
이 코드를 실행하면 data.json에 저장된 뉴스의 제목과 링크가 표시됩니다. 이러한 방식으로 우리는 node.js로 간단한 크롤러를 성공적으로 작성하고 웹 페이지에서 데이터를 가져왔습니다.
전체 코드
const request = require('request');
const cheerio = require('cheerio');
const fs = require('fs')
const url = 'https://news.baidu.com/';
request(url, function (error, response, body) {
// 如果请求成功且状态码为 200
if (!error && response.statusCode == 200) {
// 使用 cheerio 加载 HTML 文档
const $ = cheerio.load(body);
// 存储获取到的数据
const totalData = []
// 获取hotnews下全部的li元素
$('.hotnews').find('ul').find('li').each(function (index, value){
// 向数组中存放数据
totalData.push({
title: $(value).find('strong').find('a').text(),
href: $(value).find('strong').find('a').attr('href')
})
})
writeFs(totalData)
// 打印结果
console.log(totalData)
}
});
function writeFs(totalData){
fs.writeFile('./data.json', JSON.stringify(totalData), function (err, data) {
if (err) {
throw err
}
console.log('数据保存成功');
})
}
물론 이것은 아주 기본적인 예일 뿐이며 실제로 크롤러는 요청 헤더 설정, 리디렉션 처리, 예외 처리, 프록시 설정, 지연 설정, 시뮬레이션 로그인, 확인 코드 처리 및 구문 분석과 같은 많은 고급 기술과 기능을 가지고 있습니다. JSON, XML, CSV 및 기타 형식, 데이터베이스 또는 파일 등에 데이터 저장 크롤러에 대해 자세히 알아보려면 내 블로그를 계속 팔로우하세요!
과거 데이터 :
1. 인터페이스 상태 코드의 전체 분석: API는 무엇에 대해 이야기하고 있습니까?
2. 하나의 문서에서 JS 배열의 reduce 및 reduceAll 메서드 마스터하기
3. JS 배열 방법 백과사전: 배열 작업을 쉽게 마스터할 수 있습니다.
기사의 전부입니다. 읽어 주셔서 감사합니다! 아직 배우는 중이니 틀렸다면 바로잡아주세요 글이 의미가 있고 당신에게 이익이나 영감을 줄 수 있다고 생각한다면 좋아요와 모아서 격려해주세요 저를 팔로우 해주시면 더 유용한 정보를 공유하겠습니다 Front -최종 콘텐츠 및 기술. 파도 위를 걷고 있어 너와 함께 성장하길 바래~