簡単に学べる!Node.js を使用してクローラーを作成し、チュートリアルを段階的に実行してください。

ノード

クローラーは、Web ページからデータを自動的に取得できるプログラムであり、さまざまな有益な情報の収集と分析に役立ちます。この記事では、わずか数ステップで、node.js で簡単なクローラーを作成する方法を説明します。

1.node.jsとnpmをインストールする

node.js は Chrome V8 エンジンに基づく JavaScript ランタイム環境であり、サーバー側で JavaScript コードを実行できるようになります。npm は、node.js のパッケージ マネージャーであり、これを使用すると、さまざまな node.js モジュールを簡単にインストールして管理できます。

node.js と npm をインストールするには、https://nodejs.org/ にアクセスして、node.js の最新バージョンをダウンロードしてインストールします。これには、npm が自動的に含まれます。他の方法を使用してインストールすることもできます。詳細については、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.リクエストとcheerioモジュールをインストールする

クローラーが HTTP リクエストを送信して HTML ドキュメントを解析できるようにするには、2 つの非常に便利な Node.js モジュール、request と Cheerio を使用する必要があります。

request は、さまざまな HTTP リクエストを簡単に送信し、応答データを取得できるようにするシンプルな HTTP クライアントです。
Cheerio は、HTML 要素を簡単に操作および抽出できる軽量の jQuery 実装です。

これら 2 つのモジュールをインストールするには、コマンド ラインでプロジェクト フォルダーに移動し、次のコマンドを入力する必要があります。

npm install request cheerio --save

これにより、リクエストと Cheerio モジュールがダウンロードされ、プロジェクト フォルダー内の Node_modules フォルダーに保存され、package.json ファイルに記録されます。

4. クローラーコードを書く

これで、クローラー コードの作成を開始できます。まず、index.js ファイルに request モジュールと Cheerio モジュールを導入する必要があります。

const request = require('request');
const cheerio = require('cheerio');

次に、データのクロール元となる Web ページのアドレスであるターゲット URL を定義する必要があります。たとえば、Baidu Encyclopedia の node.js に関するエントリ ページをクロールしたいとします。

const url = 'https://news.baidu.com/';

次に、リクエスト モジュールを使用して、この URL に GET リクエストを送信し、応答データを取得する必要があります。たとえば、Web ページのタイトル、要約、本文のコンテンツを抽出して印刷したいとします。

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 を使用して単純なクローラーを作成し、Web ページからデータをフェッチすることに成功しました。

完全なコード

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 メソッドを 1 つの記事でマスターする

3. JS 配列メソッド百科事典: 配列操作を簡単にマスターできます。


記事は以上です、読んでいただきありがとうございました!私はまだ勉強中です。間違っている場合は修正してください。この記事が意味があり、利益やインスピレーションをもたらすことができると思われる場合は、いいねを押して集めて励ましてください。また、フォローしてください。役立つことをもっと共有します。 フロント-エンドコンテンツとスキル。私は、あなたと一緒に成長したいと願っています〜

おすすめ

転載: blog.csdn.net/weixin_45849072/article/details/130984085