>웹 프론트엔드 >JS 튜토리얼 >노드가 구현하는 크롤러 기능

노드가 구현하는 크롤러 기능

不言
不言원래의
2018-05-05 15:44:47946검색

이 글은 주로 노드가 구현하는 크롤러 기능을 소개하고, 크롤러 기능을 구현하기 위한 nodejs의 단계와 관련 운영 기법을 분석하여 필요한 친구들이 참고할 수 있습니다

이 글의 예시는 크롤러에 대해 설명합니다. 노드에 의해 구현된 기능입니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

node는 서버측 언어이므로 Python처럼 웹사이트를 크롤링할 수 있습니다. 다음으로 node를 사용하여 블로그 파크를 크롤링하고 모든 장 정보를 얻습니다. .

1단계: 크롤링 파일을 만든 다음 npm init를 만듭니다.

2단계: crawl.js 파일을 만듭니다. 전체 페이지를 크롤링하는 간단한 코드는 다음과 같습니다.

var http = require("http");
var url = "http://www.cnblogs.com";
http.get(url, function (res) {
  var html = "";
  res.on("data", function (data) {
    html += data;
  });
  res.on("end", function () {
    console.log(html);
  });
}).on("error", function () {
  console.log("获取课程结果错误!");
});

즉, http 모듈을 도입한 다음 http의 get 요청을 사용합니다. 즉, 일단 실행되면 노드 서버가 이 페이지를 요청하기 위해 get 요청을 보낸 다음 res를 통해 이를 반환하는 것과 같습니다. 여기서 바인딩 데이터 이벤트는 지속적으로 데이터를 수신하는 데 사용되며 마지막으로 인쇄됩니다. 마지막에 백그라운드에서 나옵니다.

이것은 전체 페이지의 일부일 뿐입니다. 이 페이지의 요소를 검사하면 실제로 동일한 것을 확인할 수 있습니다.

장 제목과 각 섹션의 정보만 크롤링하면 됩니다.

3단계:cherio 모듈을 다음과 같이 소개합니다. (gitbash에 설치하기만 하면 cmd에 항상 문제가 발생합니다.)

cnpm install cheerio --save-dev

이 모듈은 jQuery와 마찬가지로 DOM 작업을 용이하게 하기 위해 도입되었습니다.

4단계: 돔을 운영하고 유용한 정보를 얻으세요.

var http = require("http");
var cheerio = require("cheerio");
var url = "http://www.cnblogs.com";
function filterData(html) {
  var $ = cheerio.load(html); 
  var items = $(".post_item");
  var result = [];
  items.each(function (item) {
    var tit = $(this).find(".titlelnk").text();
    var aut = $(this).find(".lightblue").text();
    var one = {
      title: tit,
      author: aut
    };
    result.push(one);
  });
  return result;
}
function printInfos(allInfos) {
  allInfos.forEach(function (item) {
    console.log("文章题目 " + item["title"] + '\n' + "文章作者 " + item["author"] + '\n'+ '\n');
  });
}
http.get(url, function (res) {
  var html = "";
  res.on("data", function (data) {
    html += data;
  });
  res.on("end", function (data) {
    var allInfos = filterData(html);
    printInfos(allInfos);
  });
}).on("error", function () {
  console.log("爬取博客园首页失败")
});

즉, 위의 과정은 블로그의 제목과 작성자를 크롤링하는 것입니다.

최종 백그라운드 출력은 다음과 같습니다.

이것은 블로그 홈페이지의 내용과 일치합니다.

관련 권장 사항:

Node는 정적 리소스 서버를 구현합니다.

node는 토큰을 구현합니다. 기반 인증

위 내용은 노드가 구현하는 크롤러 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.