ノードが実装するクローラ機能

不言
リリース: 2018-05-05 15:44:47
オリジナル
931 人が閲覧しました

この記事では、主にnodeによって実装されたクローラ機能を紹介し、サンプルの形でクローラ機能を実装するためのnodejsの手順と関連する操作テクニックを分析します。ノードによって実装される関数。参考までに皆さんと共有してください。詳細は次のとおりです:

node はサーバーサイド言語なので、Python のように Web サイトをクロールできます。 次に、node を使用してブログパークをクロールし、すべての章の情報を取得します。 。

ステップ 1:

クロール ファイルを作成して、npm init を実行します。

ステップ 2:

roll.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 経由で返します。on binding data イベントを使用して継続的にデータを受信し、最後に出力します。最後にバックグラウンドで出力されます。

これはページ全体の一部にすぎません。このページ上の要素を検査すると、それらが実際に同じであることがわかります。

章のタイトルと各セクションの情報をクロールするだけです。

ステップ 3:

以下のように Cheerio モジュールを導入します: (gitbash にインストールするだけです。cmd には常に問題が発生します)

cnpm install cheerio --save-dev
ログイン後にコピー

このモジュールは、jQuery Same と同様に、dom の操作を容易にするために導入されます。

ステップ4:

domを操作して有益な情報を入手します。

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート