배우기 쉽다! Node.js를 사용하여 크롤러를 작성하고 튜토리얼을 단계별로 따르세요!

마디

크롤러는 웹 페이지에서 데이터를 자동으로 가져올 수 있는 프로그램으로, 다양한 유용한 정보를 수집하고 분석하는 데 도움을 줄 수 있습니다. 이 기사에서는 몇 단계만으로 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 구조는 다음과 같습니다.

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 -최종 콘텐츠 및 기술. 파도 위를 걷고 있어 너와 함께 성장하길 바래~

추천

출처blog.csdn.net/weixin_45849072/article/details/130984085