


Contoh data rangkak nod: ambil buku ilustrasi Pokémon dan jana fail Excel
Bagaimana untuk menggunakan Nod untuk merangkak data dari halaman web dan menulisnya ke dalam fail Excel? Artikel berikut menggunakan contoh untuk menerangkan cara menggunakan Node.js untuk merangkak data halaman web dan menjana fail Excel. Saya harap ia akan membantu semua orang.
Saya percaya bahawa Pokémon adalah kenangan zaman kanak-kanak ramai orang yang lahir pada tahun 90-an Sebagai seorang pengaturcara, saya ingin membuat permainan Pokémon lebih daripada sekali, tetapi sebelum melakukannya jadi, saya harus terlebih dahulu Mengisih berapa banyak Pokémon yang ada, nombor, nama, atribut dan maklumat lain mereka Dalam isu ini, kami akan menggunakan Node.js untuk hanya melaksanakan rangkak data web Pokémon untuk menukar. ini Data dijana ke dalam fail Excel sehingga antara muka digunakan untuk membaca Excel untuk mengakses data.
Data merangkak
Memandangkan kita sedang merangkak data, mari kita cari halaman web dengan data ilustrasi Pokémon, seperti yang ditunjukkan di bawah:
Tapak web ini ditulis dalam PHP, dan tiada pemisahan antara bahagian depan dan belakang, jadi kami tidak akan membaca antara muka untuk menangkap data Kami menggunakan perpustakaan crawler
untuk menangkap elemen dalam web halaman untuk mendapatkan data. Biar saya terangkan terlebih dahulu, kelebihan menggunakan perpustakaan crawler
ialah anda boleh menggunakan jQuery
untuk menangkap elemen dalam persekitaran Node.
Pemasangan:
yarn add crawler
Pelaksanaan:
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) } } }) }) }
Apabila menjana tika, anda juga perlu mendayakan mod jQuery
dan kemudian anda boleh menggunakan $
Padan. Perniagaan bahagian tengah kod di atas adalah untuk menangkap data yang diperlukan dalam merangkak halaman web Ia digunakan sama seperti jQuery API
, jadi saya tidak akan menerangkan butiran di sini.
getPokemon().then(async data => { console.log(data) })
Akhirnya kami boleh melaksanakan dan mencetak data data
yang diluluskan untuk mengesahkan bahawa format telah dirangkak dan tiada ralat.
Tulis ke Excel
Sekarang kita telah merangkak data, seterusnya, kita akan menggunakan perpustakaan node-xlsx
, untuk melengkapkan menulis data dan menjana fail Excel.
Pertama sekali, mari perkenalkan node-xlsx
ialah penghurai dan penjana fail excel yang mudah. Yang dibina oleh TS bergantung pada modul SheetJS xlsx untuk menghuraikan/membina lembaran kerja excel, jadi dalam beberapa konfigurasi parameter, kedua-duanya boleh menjadi perkara biasa.
Pemasangan:
yarn add node-xlsx
Pelaksanaan:
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) { } })
di mana name
ialah nama lajur dalam fail Excel dan jenis data
ialah tatasusunan Ia juga perlu lulus dalam tatasusunan untuk membentuk tatasusunan dua dimensi, yang bermaksud teks masuk diisih bermula dari lajur ABCDE..... Pada masa yang sama, anda boleh menetapkan lebar lajur melalui !cols
. Objek pertama wch:10
bermakna lebar lajur pertama ialah 10 aksara Terdapat banyak parameter yang boleh ditetapkan Anda boleh merujuk kepada pustaka xlsx untuk mempelajari item konfigurasi ini.
Akhir sekali, kami menggunakan kaedah xlsx.build
untuk menjana data buffer
dan akhirnya menggunakan fs.writeFileSync
untuk menulis atau mencipta fail Excel Untuk melihat dengan mudah, saya menyimpannya dalam folder bernama data. , pada masa ini, kita akan menemui fail tambahan yang dipanggil pokemon.xlsx dalam folder data Apabila kita membukanya, data masih sama Dengan cara ini, langkah menulis data ke Excel selesai.
Baca Excel
Membaca Excel sebenarnya sangat mudah dan anda tidak perlu menulis fs
untuk membaca, gunakan xlsx.parse
Kaedah boleh dibaca terus dengan menghantar alamat fail.
xlsx.parse(resolve(__dirname, "data/pokemon.xlsx"));
Sudah tentu, untuk mengesahkan ketepatan, kami terus menulis antara muka untuk melihat sama ada kami boleh mengakses data. Untuk kemudahan, saya terus menggunakan rangka kerja express
untuk mencapai perkara ini.
Mari pasang dahulu:
yarn add express
Kemudian, cipta perkhidmatan express
Saya menggunakan 3000 sebagai nombor port di sini, jadi saya menulis permintaan GET
untuk membaca Excel fail. Hanya hantar data keluar.
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}/`) })
Akhir sekali, saya menggunakan antara muka akses postman
di sini, dan anda boleh melihat dengan jelas bahawa semua data Pokémon yang kami terima daripada merangkak hingga menyimpan dalam jadual.
Kesimpulan
Seperti yang anda lihat, artikel ini menggunakan Pokémon sebagai contoh untuk mempelajari cara menggunakan Node.js untuk merangkak data dari halaman web dan cara menulis data ke dalam fail Excel . , dan cara membaca data dari fail Excel Sebenarnya, ia tidak sukar untuk dilaksanakan, tetapi kadang-kadang ia agak praktikal jika anda bimbang untuk melupakannya, anda boleh menyimpannya~
Lagi. berkaitan nod Untuk pengetahuan, sila lawati: tutorial nodejs!
Atas ialah kandungan terperinci Contoh data rangkak nod: ambil buku ilustrasi Pokémon dan jana fail Excel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk mengendalikan muat naik fail? Artikel berikut akan memperkenalkan kepada anda cara menggunakan ekspres untuk mengendalikan muat naik fail dalam projek nod saya harap ia akan membantu anda!

Cara memadam nod dengan nvm: 1. Muat turun "nvm-setup.zip" dan pasangkannya pada pemacu C 2. Konfigurasikan pembolehubah persekitaran dan semak nombor versi melalui arahan "nvm -v" 3. Gunakan "nvm arahan install" Pasang nod; 4. Padamkan nod yang dipasang melalui arahan "nvm uninstall".

Artikel ini akan berkongsi dengan anda alat pengurusan proses Node "pm2", dan bercakap tentang mengapa pm2 diperlukan, cara memasang dan menggunakan pm2, saya harap ia akan membantu semua orang!

Penjelasan dan Panduan Pemasangan Terperinci untuk Pinetwork Nodes Artikel ini akan memperkenalkan ekosistem pinetwork secara terperinci - nod pi, peranan utama dalam ekosistem pinetwork, dan menyediakan langkah -langkah lengkap untuk pemasangan dan konfigurasi. Selepas pelancaran Rangkaian Ujian Blockchain Pinetwork, nod PI telah menjadi bahagian penting dari banyak perintis yang aktif mengambil bahagian dalam ujian, bersiap sedia untuk pelepasan rangkaian utama yang akan datang. Jika anda tidak tahu kerja pinet, sila rujuk apa itu picoin? Berapakah harga untuk penyenaraian? Penggunaan PI, perlombongan dan analisis keselamatan. Apa itu Pinetwork? Projek Pinetwork bermula pada tahun 2019 dan memiliki syiling pi cryptocurrency eksklusifnya. Projek ini bertujuan untuk mewujudkan satu yang semua orang boleh mengambil bahagian

Bagaimana untuk membungkus fail boleh laku nodejs dengan pkg? Artikel berikut akan memperkenalkan kepada anda cara menggunakan pkg untuk membungkus projek Node ke dalam fail boleh laku. Saya harap ia akan membantu anda!

npm node gyp gagal kerana versi "node-gyp.js" dan "Node.js" tidak sepadan Penyelesaiannya: 1. Kosongkan cache nod melalui "npm cache clean -f" 2. Melalui "npm install -. g n" Pasang modul n; 3. Pasang versi "nod v12.21.0" melalui arahan "n v12.21.0".

Pengesahan adalah salah satu bahagian terpenting dalam mana-mana aplikasi web. Tutorial ini membincangkan sistem pengesahan berasaskan token dan cara ia berbeza daripada sistem log masuk tradisional. Pada penghujung tutorial ini, anda akan melihat demo berfungsi sepenuhnya yang ditulis dalam Angular dan Node.js. Sistem Pengesahan Tradisional Sebelum beralih kepada sistem pengesahan berasaskan token, mari kita lihat sistem pengesahan tradisional. Pengguna memberikan nama pengguna dan kata laluan mereka dalam borang log masuk dan klik Log Masuk. Selepas membuat permintaan, sahkan pengguna di bahagian belakang dengan menanyakan pangkalan data. Jika permintaan itu sah, sesi dibuat menggunakan maklumat pengguna yang diperoleh daripada pangkalan data dan maklumat sesi dikembalikan dalam pengepala respons supaya ID sesi disimpan dalam penyemak imbas. Menyediakan akses kepada aplikasi tertakluk kepada

Bagaimana untuk melaksanakan OCR (pengiktirafan aksara optik)? Artikel berikut akan memperkenalkan kepada anda cara menggunakan nod untuk melaksanakan OCR. Saya harap ia akan membantu anda!
