이 글은 주로 노드가 구현하는 크롤러 기능을 소개하고, 크롤러 기능을 구현하기 위한 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("爬取博客园首页失败") });
즉, 위의 과정은 블로그의 제목과 작성자를 크롤링하는 것입니다.
최종 백그라운드 출력은 다음과 같습니다.
이것은 블로그 홈페이지의 내용과 일치합니다.
관련 권장 사항:
위 내용은 노드가 구현하는 크롤러 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!