
Cara cepat memulai VUE3.0: Masuk ke pembelajaran
Halo semuanya, saya Xiaoma, mengapa saya perlu mengunduh begitu banyak gambar? Beberapa hari yang lalu, saya menyebarkan applet wallpaper secara gratis menggunakan uni-app + uniCloud. Kemudian saya memerlukan beberapa sumber daya untuk mengisi konten applet.
pertama-tama inisialisasi proyek dan instal axios dan cheerio
npm init -y && npm i axios cheerio
axios digunakan untuk merayapi konten web. cheerio adalah api jquery di sisi server dom;
const aksio = memerlukan('aksios')
const cheerio = memerlukan('cheerio')
fungsi getImageUrl(target_url, containerEelment) {
biarkan hasil_daftar = []
const res = menunggu axios.get(target_url)
const html = res.data
const $ = cheerio.beban(html)
const hasil_daftar = []
$(containerEelment).each((elemen) => {
hasil_daftar.push($(elemen).find('img').attr('src'))
})
kembalikan hasil_daftar
} Dengan cara ini, Anda bisa mendapatkan url gambar di halaman tersebut. Selanjutnya Anda perlu mendownload gambar sesuai dengan urlnya.
Metode 1: Gunakan modul bawaan 'https' dan 'fs'
Mengunduh file menggunakan nodejs dapat dilakukan menggunakan paket bawaan atau perpustakaan pihak ketiga.
Metode GET digunakan dengan HTTPS untuk mengunduh file. createWriteStream() adalah metode yang digunakan untuk membuat aliran yang dapat ditulis. Metode ini hanya menerima satu parameter, yaitu lokasi penyimpanan file. Pipe() adalah metode yang membaca data dari aliran yang dapat dibaca dan menulisnya ke aliran yang dapat ditulis.
const fs = memerlukan('fs')
const https = memerlukan('https')
//URL gambar
const url = 'GFG.jpeg'
https.dapatkan(url, (res) => {
// Gambar akan disimpan di jalur ini
jalur const = `${__dirname}/files/img.jpeg`
const filePath = fs.createWriteStream(jalur)
res.pipe(jalur file)
filePath.on('selesai', () => {
filePath.close()
console.log('Pengunduhan Selesai')
})
}) Metode 2: DownloadHelper
npm install node-downloader-helperBerikut
ini adalah kode untuk mendownload gambar dari website. Sebuah objek dl dibuat oleh kelas DownloadHelper, yang menerima dua parameter:
Variabel File berisi URL gambar yang akan diunduh, dan variabel filePath berisi path ke file yang akan disimpan.
const { DownloaderHelper } = memerlukan('node-downloader-helper')
//URL gambar
file const = 'GFG.jpeg'
// Jalur di mana gambar akan diunduh
const filePath = `${__dirname}/files`
const dl = DownloaderHelper baru(file, filePath)
dl.on('end', () => console.log('Pengunduhan Selesai'))
dl.start() metode ketiga: Gunakan download.
Ini ditulis oleh npm master sindresorhus. Sangat mudah digunakan.
npm install download
Berikut ini adalah kode untuk mendownload gambar dari website. Fungsi pengunduhan menerima file dan jalur file.
const unduh = memerlukan('unduh')
// Url gambar
file const = 'GFG.jpeg'
// Jalur di mana gambar akan diunduh
const filePath = `${__dirname}/files`
unduh(file, filePath).lalu(() => {
console.log('Pengunduhan Selesai')
}) awalnya ingin merayapi wallpaper Baidu, tetapi resolusinya tidak cukup, dan ada tanda air, dll. Kemudian, seorang teman di grup menemukan API, yang mungkin merupakan wallpaper definisi tinggi di aplikasi seluler tertentu , dan bisa langsung digunakan. Setelah mendapat URL downloadnya, saya langsung menggunakannya.
Berikut kode lengkapnya
const download = require('download')
const aksio = memerlukan('aksios')
biarkan header = {
'Agen-Pengguna':
'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, seperti Gecko) Chrome/87.0.4280.88 Safari/537.36',
}
fungsi tidur(waktu) {
kembalikan Janji baru((reslove) => setTimeout(reslove, time))
}
fungsi async memuat(lewati = 0) {
const data = menunggu aksio
.mendapatkan(
'http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000000/vertical',
{
header,
parameter: {
batas: 30, // Memperbaiki pengembalian 30 item per halaman lewati: lewati,
pertama: 0,
urutan: 'panas',
},
}
)
.lalu((res) => {
kembalikan res.data.res.vertikal
})
.menangkap((salah) => {
konsol.log(err)
})
tunggu unduhanFile(data)
menunggu tidur (3000)
jika (lewati <1000) {
memuat (lewati + 30)
} kalau tidak {
console.log('Pengunduhan selesai')
}
}
fungsi async unduhFile(data) {
for (biarkan indeks = 0; indeks < data.panjang; indeks++) {
item const = data[indeks]
// Jalur di mana gambar akan diunduh
const filePath = `${__dirname}/kecantikan`
tunggu unduhan(item.wp, filePath, {
nama file: item.id + '.jpeg',
header,
}).lalu(() => {
console.log(`Unduh ${item.id} Selesai`)
kembali
})
}
}
Pada kode load() di atas,
Anda harus menyetel User-Agent terlebih dahulu dan menyetel penundaan 3 detik. Hal ini dapat mencegah server memblokir crawler dan langsung mengembalikan 403.
Cukup gunakan node index.js dan gambar akan terdownload secara otomatis.
,
pengalaman pencarian program mini WeChat di " Galeri Semangka ".
https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c5301b8b97094e92bfae240d7eb1ec5e~tplv-k3u1fbpfcp-zoom-1.awebp?