Comment démarrer rapidement avec VUE3.0 : Entrez dans l'apprentissage
Bonjour à tous, je suis Xiaomi, pourquoi ai-je besoin de télécharger autant de photos ? Il y a quelques jours, j'ai déployé gratuitement une applet de fond d'écran en utilisant uni-app + uniCloud. Ensuite, j'ai besoin de quelques ressources pour remplir le contenu de l'applet.
initialisez d'abord le projet et installez axios
et cheerio
npm init -y && npm i axios cheerio
axios
est utilisé pour explorer le contenu Web cheerio
est l'API jquery côté serveur. Nous l'utilisons pour obtenir l'adresse de l'image dans le fichier. dom;
const axios = exiger('axios') const cheerio = exiger('cheerio') fonction getImageUrl (target_url, conteneurEelment) { laissez result_list = [] const res = attendre axios.get (target_url) const html = res.data const $ = cheerio.load(html) const liste_résultats = [] $(containerEelment).each((element) => { result_list.push($(element).find('img').attr('src')) }) retourner la liste_résultats }
De cette façon, vous pouvez obtenir l'URL de l'image dans la page. Ensuite, vous devez télécharger l'image en fonction de l'URL.
Méthode 1 : utiliser les modules intégrés « https » et « fs »
Le téléchargement de fichiers à l'aide de nodejs peut être effectué à l'aide de packages intégrés ou de bibliothèques tierces.
La méthode GET est utilisée avec HTTPS pour obtenir le fichier à télécharger. createWriteStream()
est une méthode utilisée pour créer un flux inscriptible. Elle ne reçoit qu'un seul paramètre, qui est l'emplacement où le fichier est enregistré. Pipe()
est une méthode qui lit les données d'un flux lisible et les écrit dans un flux inscriptible.
const fs = exiger('fs') const https = exiger('https') //URL de l'image URL const = 'GFG.jpeg' https.get(url, (res) => { // L'image sera stockée sur ce chemin chemin const = `${__dirname}/files/img.jpeg` const filePath = fs.createWriteStream(chemin) res.pipe (chemin de fichier) filePath.on('terminer', () => { filePath.close() console.log('Téléchargement terminé') }) })
Méthode 2 : DownloadHelper
npm install node-downloader-helperVoici
le code pour télécharger des images à partir du site Web. Un objet dl est créé par la classe DownloadHelper, qui reçoit deux paramètres :
La variable File contient l'URL de l'image qui sera téléchargée et la variable filePath contient le chemin d'accès au fichier qui sera enregistré.
const { DownloaderHelper } = require('node-downloader-helper') //URL de l'image fichier const = 'GFG.jpeg' // Chemin sur lequel l'image sera téléchargée const filePath = `${__dirname}/files` const dl = nouveau DownloaderHelper (fichier, filePath) dl.on('end', () => console.log('Téléchargement terminé'))Troisième méthode
dl.start()
: Utiliser le téléchargement.
Il est écrit par npm master sindresorhus. Il est très facile à utiliser.
npm install download
Voici le code pour télécharger des images à partir du site Web. La fonction de téléchargement reçoit un fichier et un chemin de fichier.
const télécharger = require('télécharger') // URL de l'image fichier const = 'GFG.jpeg' // Chemin sur lequel l'image sera téléchargée const filePath = `${__dirname}/files` download(file, filePath).then(() => { console.log('Téléchargement terminé') })
voulait à l'origine explorer les fonds d'écran Baidu, mais la résolution n'était pas suffisante et il y avait des filigranes, etc. Plus tard, un ami du groupe a trouvé une API, qui était probablement un fond d'écran haute définition sur une certaine application mobile. , et pourrait être utilisé directement. Après avoir obtenu l'URL de téléchargement, je l'ai utilisé directement.
Ce qui suit est le code complet
const download = require('download') const axios = exiger('axios') laissez les en-têtes = { 'Agent utilisateur' : 'Mozilla/5.0 (Macintosh ; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, comme Gecko) Chrome/87.0.4280.88 Safari/537.36', } fonction sommeil (heure) { renvoyer une nouvelle promesse ((reslove) => setTimeout (reslove, time)) } charge de fonction asynchrone (skip = 0) { const data = attendre axios .obtenir( 'http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000000/vertical', { en-têtes, paramètres : { limit: 30, // Retour fixe de 30 éléments par page skip: skip, premier : 0, ordre : 'chaud', }, } ) .then((res) => { retourner res.data.res.vertical }) .catch((erreur) => { console.log (erreur) }) attendre le téléchargement du fichier (données) attendre de dormir (3000) si (sauter < 1000) { charger (sauter + 30) } autre { console.log('Téléchargement terminé') } } fonction asynchrone downloadFile(data) { pour (soit index = 0; index < data.length; index++) { élément const = données[index] // Chemin sur lequel l'image sera téléchargée const filePath = `${__dirname}/beauty` attendre le téléchargement (item.wp, filePath, { nom du fichier : item.id + '.jpeg', en-têtes, }).then(() => { console.log(`Téléchargement ${item.id} terminé`) retour }) } }Dans le code ci-dessus de
load(),
vous devez d'abord définir User-Agent
et définir un délai de 3 secondes. Cela peut empêcher le serveur de bloquer le robot et de renvoyer directement 403.
Utilisez simplement node index.js
et l’image sera téléchargée automatiquement.
,
l'expérience de recherche du mini programme WeChat de " Watermelon Gallery ".
https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c5301b8b97094e92bfae240d7eb1ec5e~tplv-k3u1fbpfcp-zoom-1.awebp?