ノード巡回データ例:ポケモン図鑑を取得しExcelファイルを生成

青灯夜游
リリース: 2022-10-10 19:28:44
転載
2428 人が閲覧しました

Node を使用して Web ページからデータをクロールし、Excel ファイルに書き込むにはどうすればよいですか?次の記事では、Node.js を使用して Web ページ データをクロールし、Excel ファイルを生成する方法を例を使用して説明します。

ノード巡回データ例:ポケモン図鑑を取得しExcelファイルを生成

90 年代生まれの多くの人にとって、ポケモンは幼少期の思い出であると思います。プログラマーとして、私はポケモンのゲームを作りたいと思ったことは何度もありますが、作る前にそこで、まずポケモンの数、数、名前、属性などの情報を整理する必要があります。今回は、Node.js を使用して、ポケモンの Web データをクローリングして変換するだけです。これらのデータは、インターフェイスを使用して Excel を読み取ってデータにアクセスするまで、Excel ファイルに生成されます。

データのクローリング

データをクローリングしているので、まず、以下に示すように、ポケモンのイラストが描かれた Web ページを探しましょう:

ノード巡回データ例:ポケモン図鑑を取得しExcelファイルを生成

この Web サイトは PHP で書かれており、表と裏の区別がないため、データをキャプチャするためにインターフェイスを読み込むことはありません。キャプチャには crawler ライブラリを使用します。 Web ページのコンテンツ、データを取得する要素。事前に説明しておくと、crawler ライブラリを使用する利点は、jQuery を使用して Node 環境の要素をキャプチャできることです。

インストール:

yarn add crawler
ログイン後にコピー

実装:

const Crawler = require("crawler");
const fs = require("fs")
const { resolve } = require("path")

let crawler = new Crawler({
    timeout: 10000,
    jQuery: true,
});

let crawler = new Crawler({
    timeout: 10000,
    jQuery: true,
});

function getPokemon() {
    let uri = "" // 宝可梦图鉴地址
    let data = []
    return new Promise((resolve, reject) => {
        crawler.queue({
            uri,
            callback: (err, res, done) => {
                if (err) reject(err);
                let $ = res.$;
                try {
                    let $tr = $(".roundy.eplist tr");
                    $tr.each((i, el) => {
                        let $td = $(el).find("td");
                        let _code = $td.eq(1).text().split("\n")[0]
                        let _name = $td.eq(3).text().split("\n")[0]
                        let _attr = $td.eq(4).text().split("\n")[0]
                        let _other = $td.eq(5).text().split("\n")[0]
                        _attr = _other.indexOf("属性") != -1 ? _attr : `${_attr}+${_other}`
                        if (_code) {
                            data.push([_code, _name, _attr])
                        }
                    })
                    done();
                    resolve(data)
                } catch (err) {
                    done()
                    reject(err)
                }

            }
        })
    })
}
ログイン後にコピー

インスタンスを生成するときは、jQuery モードも有効にする必要があります。その後、 # を使用できます。 ## $ が一致します。上記のコードの中間部分の業務は、要素で必要なデータを取得し、Web ページをクロールすることですが、jQuery API と同じように使用されるため、ここでは詳細は説明しません。

getPokemon().then(async data => {
    console.log(data)
})
ログイン後にコピー
最後に、渡された

data データを実行して印刷し、形式がクロールされ、エラーがないことを確認できます。

ノード巡回データ例:ポケモン図鑑を取得しExcelファイルを生成

Excel への書き込み

データをクロールしたので、次に、

node - を使用します。 xlsx ライブラリを使用して、データの書き込みと Excel ファイルの生成を完了します。

まず、

node-xlsx がシンプルな Excel ファイル パーサーおよびジェネレーターであることを紹介しましょう。 TS によって構築されたものは、Excel ワークシートを解析/構築するために SheetJS xlsx モジュールに依存しているため、一部のパラメーター構成では 2 つが共通する可能性があります。

インストール:

yarn add node-xlsx
ログイン後にコピー
実装:

const xlsx = require("node-xlsx")

getPokemon().then(async data => {
    let title = ["编号", "宝可梦", "属性"]
    let list = [{
        name: "关都",
        data: [
            title,
            ...data
        ]
    }];
    const sheetOptions = { '!cols': [{ wch: 15 }, { wch: 20 }, { wch: 20 }] };
    const buffer = await xlsx.build(list, { sheetOptions })
    try {
        await fs.writeFileSync(resolve(__dirname, "data/pokemon.xlsx"), buffer, "utf8")
    } catch (error) { }
})
ログイン後にコピー

name は Excel ファイル内の列名であり、data型が配列の場合、2 次元配列を形成するために配列も渡す必要があります。これは、受信テキストが ABCDE.... 列から開始してソートされることを意味します。同時に、!cols を使用して列幅を設定できます。最初のオブジェクト wch:10 は、最初の列の幅が 10 文字であることを意味します。設定できるパラメータは多数あります。これらの設定項目については、xlsx ライブラリ を参照してください。 。

最後に、

xlsx.build メソッドを通じて buffer データを生成し、最後に fs.writeFileSync を使用して Excel ファイルを書き込みまたは作成します, 見やすくするために、data という名前のフォルダーに保存しました。このとき、data フォルダーの中に pokemon.xlsx という追加ファイルが見つかります。それを開くとデータは同じです。次のようにデータを書き込みますこれで Excel への入力手順は完了です。

ノード巡回データ例:ポケモン図鑑を取得しExcelファイルを生成

Excel の読み取り

Excel の読み取りは実際には非常に簡単で、

fs## を記述する必要さえありません。 # 読み取ります。xlsx.parse メソッドを使用してファイル アドレスを渡し、ファイルを直接読み取ります。 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">xlsx.parse(resolve(__dirname, &quot;data/pokemon.xlsx&quot;));</pre><div class="contentsignin">ログイン後にコピー</div></div>もちろん、精度を検証するために、データにアクセスできるかどうかを確認するインターフェイスを直接作成します。便宜上、

express

フレームワークを直接使用してこれを実現します。 まずインストールしましょう:

yarn add express
ログイン後にコピー

次に、

express

サービスを作成します。ここではポート番号に 3000 を使用するので、GET## を記述するだけです。 # Excel ファイルから読み取ったデータの送信を要求するだけです。

const express = require("express")
const app = express();
const listenPort = 3000;

app.get("/pokemon",(req,res)=>{
    let data = xlsx.parse(resolve(__dirname, "data/pokemon.xlsx"));
    res.send(data)
})

app.listen(listenPort, () => {
    console.log(`Server running at http://localhost:${listenPort}/`)
})
ログイン後にコピー
最後に、ここでは postman アクセス インターフェイスを使用します。クロールからテーブルへの保存まで受け取ったすべてのポケモン データがはっきりとわかります。

結論

ご覧のとおり、この記事ではポケモンを例として、Node.js を使用して Web ページからデータをクロールする方法と、データを Excel ファイルに書き込む方法を学習します。 . と Excel ファイルのデータの読み取り方法を説明します。実際、実装は難しくありませんが、場合によっては非常に実用的です。忘れるのが心配な場合は、保存しておいても問題ありません ~

その他のノード関連の知識については、nodejs チュートリアルを参照してください。

以上がノード巡回データ例:ポケモン図鑑を取得しExcelファイルを生成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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