So starten Sie schnell mit VUE3.0: Betreten Sie das Lernen
Hallo zusammen, ich bin Xiaoma, warum muss ich so viele Bilder herunterladen? Vor ein paar Tagen habe ich mit uni-app + uniCloud kostenlos ein Hintergrundbild-Applet bereitgestellt. Dann benötige ich einige Ressourcen, um den Inhalt des Applets auszufüllen.
initialisieren Sie zuerst das Projekt und installieren Sie axios
und cheerio
npm init -y && npm i axios cheerio
cheerio
axios
zum Crawlen von Webinhalten verwendet. Wir verwenden es, um die Bildadresse im zu erhalten dom;
const axios = require('axios') const cheerio = require('cheerio') Funktion getImageUrl(target_url, containerEelment) { let result_list = [] const res = Warten auf axios.get(target_url) const html = res.data const $ = cheerio.load(html) const result_list = [] $(containerEelment).each((element) => { result_list.push($(element).find('img').attr('src')) }) Ergebnisliste zurückgeben }
Auf diese Weise können Sie die Bild-URL auf der Seite abrufen. Als nächstes müssen Sie das Bild entsprechend der URL herunterladen.
Methode 1: Verwenden Sie die integrierten Module „https“ und „fs“.
Das Herunterladen von Dateien mit nodejs kann mithilfe integrierter Pakete oder Bibliotheken von Drittanbietern erfolgen.
Die GET-Methode wird mit HTTPS verwendet, um die herunterzuladende Datei abzurufen. createWriteStream()
ist eine Methode zum Erstellen eines beschreibbaren Streams. Sie empfängt nur einen Parameter, nämlich den Speicherort der Datei. Pipe()
ist eine Methode, die Daten aus einem lesbaren Stream liest und in einen beschreibbaren Stream schreibt.
const fs = require('fs') const https = require('https') //URL des Bildes const url = 'GFG.jpeg' https.get(url, (res) => { // Das Bild wird unter diesem Pfad gespeichert const path = `${__dirname}/files/img.jpeg` const filePath = fs.createWriteStream(pfad) res.pipe(filePath) filePath.on('finish', () => { filePath.close() console.log('Download abgeschlossen') }) })
Methode 2: DownloadHelper
npm install node-downloader-helperDas
Folgende ist der Code zum Herunterladen von Bildern von der Website. Von der Klasse DownloadHelper wird ein Objekt dl erstellt, das zwei Parameter erhält:
Die Variable „File“ enthält die URL des Bildes, das heruntergeladen wird, und die Variable „filePath“ enthält den Pfad zu der Datei, die gespeichert wird.
const { DownloaderHelper } = require('node-downloader-helper') //URL des Bildes const file = 'GFG.jpeg' // Pfad, unter dem das Bild heruntergeladen wird const filePath = `${__dirname}/files` const dl = new DownloaderHelper(file, filePath) dl.on('end', () => console.log('Download abgeschlossen')) dl.start()
Methode drei:
Es wurde von npm master geschrieben. Es ist sehr einfach,
npm install downloadzu verwenden.
Das Folgende ist der Code zum Herunterladen von Bildern. Die Download-Funktion erhält eine Datei und einen Dateipfad.
const download = require('download') // URL des Bildes const file = 'GFG.jpeg' // Pfad, unter dem das Bild heruntergeladen wird const filePath = `${__dirname}/files` download(file, filePath).then(() => { console.log('Download abgeschlossen') })
wollte ursprünglich Baidu-Hintergrundbilder crawlen, aber die Auflösung reichte nicht aus und es gab Wasserzeichen usw. Später fand ein Freund in der Gruppe eine API, bei der es sich wahrscheinlich um ein hochauflösendes Hintergrundbild auf einer bestimmten mobilen APP handelte , und konnte direkt verwendet werden Nachdem ich die Download-URL erhalten hatte, habe ich sie direkt verwendet.
Das Folgende ist der vollständige Code
const download = require('download') const axios = require('axios') let headers = { 'Benutzeragent': „Mozilla/5.0 (Macintosh; Intel Mac OS } Funktion Schlaf(Zeit) { return new Promise((reslove) => setTimeout(reslove, time)) } asynchrones Funktionsladen (skip = 0) { const data = axios erwarten .erhalten( „http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000000/vertical“, { Kopfzeilen, Parameter: { limit: 30, // Rückgabe von 30 Elementen pro Seite korrigiert überspringen: überspringen, zuerst: 0, Befehl: 'heiß', }, } ) .then((res) => { res.data.res.vertical zurückgeben }) .catch((err) => { console.log(fehler) }) Warten auf DownloadDatei(Daten) warte auf den Schlaf (3000) if (skip < 1000) { laden (überspringen + 30) } anders { console.log('Download abgeschlossen') } } asynchrone Funktion downloadFile(data) { for (let index = 0; index < data.length; index++) { const item = data[index] // Pfad, unter dem das Bild heruntergeladen wird const filePath = `${__dirname}/beauty` Warten Sie auf den Download (item.wp, filePath, { Dateiname: item.id + '.jpeg', Kopfzeilen, }).then(() => { console.log(`Download ${item.id} abgeschlossen`) zurückkehren }) } }Im obigen Code von
Load()
müssen Sie zunächst User-Agent
und eine Verzögerung von 3 Sekunden festlegen. Dadurch kann verhindert werden, dass der Server den Crawler blockiert und direkt 403 zurückgibt.
Verwenden Sie einfach node index.js
und das Bild wird automatisch heruntergeladen.
,
das WeChat-Miniprogramm-Sucherlebnis der „ Watermelon Gallery “.
https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c5301b8b97094e92bfae240d7eb1ec5e~tplv-k3u1fbpfcp-zoom-1.awebp?