Maison > interface Web > js tutoriel > le corps du texte

Exemple de données d'exploration de nœud : récupérez le livre illustré Pokémon et générez un fichier Excel

青灯夜游
Libérer: 2022-10-10 19:28:44
avant
2428 Les gens l'ont consulté

Comment utiliser Node pour explorer les données des pages Web et les écrire dans des fichiers Excel ? L'article suivant utilise un exemple pour expliquer comment utiliser Node.js pour explorer les données de pages Web et générer des fichiers Excel. J'espère que cela sera utile à tout le monde !

Exemple de données d'exploration de nœud : récupérez le livre illustré Pokémon et générez un fichier Excel

Je crois que Pokémon est le souvenir d'enfance de nombreuses personnes nées dans les années 90. En tant que programmeur, j'ai voulu créer un jeu Pokémon plus d'une fois, mais avant de le faire, je dois d'abord déterminer combien de Pokémon. il y en a et leurs numéros, noms, attributs et autres informations sont triés. Dans ce numéro, nous utiliserons Node.js pour simplement implémenter une exploration des données Web Pokémon, générer ces données dans des fichiers Excel, puis utiliser l'interface. lire Excel pour accéder à ces données.

Exploration des données

Puisque nous explorons des données, trouvons d'abord une page Web avec des données illustrées de Pokémon, comme indiqué ci-dessous :

Exemple de données dexploration de nœud : récupérez le livre illustré Pokémon et générez un fichier Excel

Ce site Web est écrit en PHP, et il n'y a pas de séparation entre l'avant et back. , nous ne lirons donc pas l'interface pour capturer les données. Nous utilisons la bibliothèque crawler pour capturer les éléments de la page Web afin d'obtenir des données. Laissez-moi vous expliquer à l'avance, l'avantage d'utiliser la bibliothèque crawler est que vous pouvez utiliser jQuery pour capturer des éléments dans l'environnement Node. crawler 库,来捕获网页中的元素从而得到数据。提前说明一下,用 crawler 库,好处是你可以用 jQuery 的方式在Node环境中捕获元素。

安装:

yarn add crawler
Copier après la connexion

实现:

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)
                }

            }
        })
    })
}
Copier après la connexion

在生成实例的时候,还需要开启 jQuery 模式,然后,就可以使用 $ 符了。而以上代码的中间部分的业务就是在捕获元素爬取网页中所需要的数据,使用起来和 jQuery API 一样,这里就不再赘述了 。

getPokemon().then(async data => {
    console.log(data)
})
Copier après la connexion

最后我们可以执行并打印一下传过来的 data 数据,来验证确实爬取到了格式也没有错误。

Exemple de données dexploration de nœud : récupérez le livre illustré Pokémon et générez un fichier Excel

写入Excel

既然刚才已经爬取到数据了,接下来,我们就将使用 node-xlsx 库,来完成把数据写入并生成一个 Excel 文件中。

首先,我们先介绍一下,node-xlsx 是一个简单的 excel 文件解析器和生成器。由 TS 构建的一个依靠 SheetJS xlsx 模块来解析/构建 excel 工作表,所以,在一些参数配置上,两者可以通用。

安装:

yarn add node-xlsx
Copier après la connexion

实现:

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) { }
})
Copier après la connexion

name 则是Excel文件中的栏目名,而其中的 data 类型是数组其也要传入一个数组,构成二维数组,其表示从 ABCDE.... 列中开始排序传入文本。同时,可以通过!cols来设置列宽。第一个对象wch:10  则表示 第一列宽度为10 个字符,还有很多参数可以设置,可以参照 xlsx 库 来学习这些配置项。

最后,我们通过 xlsx.build 方法来生成 buffer 数据,最后用 fs.writeFileSync 写入或创建一个 Excel 文件中,为了方便查看,我这里存入了 名叫 data 的文件夹里,此时,我们在 data 文件夹 就会发现多出一个叫 pokemon.xlsx 的文件,打开它,数据还是那些,这样把数据写入到Excel的这步操作就完成了。

Exemple de données dexploration de nœud : récupérez le livre illustré Pokémon et générez un fichier Excel

读取Excel

读取Excel其实非常容易甚至不用写  fs 的读取, 用xlsx.parse 方法传入文件地址就能直接读取到。

xlsx.parse(resolve(__dirname, "data/pokemon.xlsx"));
Copier après la connexion

当然,我们为了验证准确无误,直接写一个接口,看看能不能访问到数据。为了方便我直接用 express 框架来完成这件事。

先来安装一下:

yarn add express
Copier après la connexion

然后,再创建  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}/`)
})
Copier après la connexion

最后,我这里用 postman

Installation :

rrreeeExemple de données dexploration de nœud : récupérez le livre illustré Pokémon et générez un fichier ExcelImplémentation :

rrreee🎜Lors de la génération d'une instance, vous devez également activer le mode jQuery, puis vous pouvez utiliser le symbole $. L'objectif de la partie centrale du code ci-dessus est de capturer les données requises dans les éléments et d'explorer les pages Web. Elle est utilisée de la même manière que l'API jQuery, je n'entrerai donc pas dans les détails ici. 🎜rrreee🎜Enfin, nous pouvons exécuter et imprimer les données data transmises pour vérifier que le format a été exploré et qu'il n'y a pas d'erreurs. 🎜🎜Exemple d'image 1.png🎜

🎜Écrire dans Excel🎜🎜🎜Maintenant que nous venons d'explorer les données, nous allons ensuite utiliser node-xlsx code > bibliothèque pour compléter l'écriture des données et générer un fichier Excel. 🎜🎜Tout d'abord, présentons que <code>node-xlsx est un simple analyseur et générateur de fichiers Excel. Une dépendance construite par TSSheetJS xlsx 🎜 module pour analyser/construire des feuilles de calcul Excel, donc dans certaines configurations de paramètres, les deux peuvent être communs. 🎜🎜Installation : 🎜rrreee🎜Implémentation : 🎜rrreee🎜Le name est le nom de la colonne dans le fichier Excel, et le type data est un tableau, qui doit également être transmis dans Array, formant un tableau bidimensionnel, qui représente le texte entrant trié à partir de la colonne ABCDE..... Dans le même temps, la largeur des colonnes peut être définie via !cols. Le premier objet wch:10 signifie que la largeur de la première colonne est de 10 caractères. De nombreux paramètres peuvent être définis. Vous pouvez vous référer à xlsx library🎜 pour connaître ces éléments de configuration. 🎜🎜Enfin, nous utilisons la méthode xlsx.build pour générer les données buffer, et enfin utilisons fs.writeFileSync pour écrire ou créer un Excel Pour faciliter la visualisation, je l'ai stocké dans un dossier nommé data. À ce moment, nous trouverons un fichier supplémentaire appelé pokemon.xlsx dans le dossier data. Ouvrez-le et les données seront toujours les mêmes. de cette façon Cette étape vers Excel est terminée. 🎜🎜Exemple d'image 2.png🎜

🎜Lire Excel🎜🎜🎜La lecture d'Excel est en fait très simple et vous n'avez même pas besoin d'écrire fs pour lire , utilisez la méthode xlsx.parse qui peut être lue directement en transmettant l'adresse du fichier. 🎜rrreee🎜Bien sûr, afin de vérifier l'exactitude, nous écrivons directement une interface pour voir si nous pouvons accéder aux données. Pour plus de commodité, j'utilise directement le framework express pour y parvenir. 🎜🎜Installez-le d'abord : 🎜rrreee🎜Ensuite, créez le service express. J'utilise ici 3000 comme numéro de port, j'écris donc une requête GET pour lire le fichier Excel. . Envoyez simplement les données. 🎜rrreee🎜Enfin, j'utilise ici l'interface d'accès postman, et vous pouvez clairement voir que toutes les données Pokémon que nous avons reçues de l'exploration au stockage dans le tableau. 🎜🎜🎜🎜

Conclusion

Comme vous pouvez le voir, cet article utilise Pokémon comme exemple pour apprendre à utiliser Node.js pour explorer les données des pages Web, comment écrire des données dans des fichiers Excel et comment lire des données à partir de fichiers Excel. trois questions ne sont en fait pas difficiles à mettre en œuvre, mais parfois elles sont assez pratiques. Si vous craignez d'oublier, vous pouvez les enregistrer~

Pour plus de connaissances sur les nœuds, veuillez visiter : tutoriel nodejs !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:juejin.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!