كيف تبدأ بسرعة مع VUE3.0: أدخل التعلم
مرحبًا جميعًا، أنا Xiaoma، لماذا أحتاج إلى تنزيل الكثير من الصور؟ منذ بضعة أيام، قمت بنشر تطبيق صغير للخلفية مجانًا باستخدام uni-app + uniCloud، ثم أحتاج إلى بعض الموارد لملء محتوى التطبيق الصغير.
قم أولاً بتهيئة المشروع وتثبيت axios
و cheerio
npm init -y && npm i axios،
يتم استخدام Cheerio axios
للزحف إلى محتوى الويب. cheerio
هي واجهة برمجة تطبيقات jquery على جانب الخادم dom
const axios = require('axios') كونست تشيريو = تتطلب ("تشيريو") وظيفة getImageUrl(target_url, ContainerEelment) { دع result_list = [] const res = انتظار axios.get(target_url) const html = res.data const $ = Cherio.load(html) نتيجة ثابتة = [] $(containerEelment).each((element) => { result_list.push($(element).find('img').attr('src')) }) إرجاع نتيجة_القائمة }
بهذه الطريقة، يمكنك الحصول على عنوان url للصورة في الصفحة. بعد ذلك، تحتاج إلى تنزيل الصورة وفقًا لعنوان url.
الطريقة الأولى: استخدام الوحدات المضمنة "https" و"fs"
يمكن تنزيل الملفات باستخدام Nodejs باستخدام الحزم المضمنة أو مكتبات الطرف الثالث.
يتم استخدام طريقة GET مع HTTPS لتنزيل الملف. createWriteStream()
هي طريقة تُستخدم لإنشاء دفق قابل للكتابة، وهي تتلقى معلمة واحدة فقط، وهو الموقع الذي تم حفظ الملف فيه. Pipe()
هي طريقة تقرأ البيانات من دفق قابل للقراءة وتكتبها في دفق قابل للكتابة.
const خ = يتطلب ('fs') const https = يتطلب ('https') // عنوان URL للصورة عنوان URL الثابت = 'GFG.jpeg' https.get(url, (res) => { // سيتم تخزين الصورة في هذا المسار مسار ثابت = `${__dirname}/files/img.jpeg` const filePath = fs.createWriteStream(path) res.pipe (مسار الملف) filePath.on('finish', () => { مسار الملف.إغلاق() console.log("اكتمل التنزيل") }) })
الطريقة الثانية: DownloadHelper
npm install Node-downloader-helper
فيما يلي رمز تنزيل الصور من موقع الويب. يتم إنشاء كائن dl بواسطة فئة DownloadHelper، التي تتلقى معلمتين:
يحتوي متغير الملف على عنوان URL للصورة التي سيتم تنزيلها، ويحتوي متغير filePath على المسار إلى الملف الذي سيتم حفظه.
const { DownloaderHelper } = require('node-downloader-helper') // عنوان URL للصورة ملف const = 'GFG.jpeg' // المسار الذي سيتم تنزيل الصورة فيه const filePath = `${__dirname}/files` const dl = new DownloaderHelper(file, filePath) dl.on('end', () => console.log('اكتمل التنزيل')) dl.start()الطريقة
الثالثة
: استخدم التنزيل
وهو مكتوب بواسطةnpm
master sindresorhus وهو سهل الاستخدام للغاية.
تتلقى وظيفة التنزيل مسار الملف والملف.
تنزيل ثابت = يتطلب ("تنزيل") // رابط الصورة ملف const = 'GFG.jpeg' // المسار الذي سيتم تنزيل الصورة فيه const filePath = `${__dirname}/files` تنزيل (ملف، filePath).then(() => { console.log("اكتمل التنزيل") })أراد
في الأصل الزحف إلى خلفيات Baidu، لكن الدقة لم تكن كافية، وكانت هناك علامات مائية، وما إلى ذلك. لاحقًا، عثر أحد الأصدقاء في المجموعة على واجهة برمجة تطبيقات، والتي ربما كانت خلفية عالية الدقة على تطبيق جوال معين ويمكن استخدامه مباشرة بعد الحصول على عنوان URL للتنزيل، استخدمته مباشرة.
فيما يلي الكود الكامل
const download = require('download') محاور ثابتة = تتطلب ("محور") دع الرؤوس = { "وكيل المستخدم": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML، مثل Gecko) Chrome/87.0.4280.88 Safari/537.36', } وظيفة النوم (الوقت) { إرجاع وعد جديد ((reslove) => setTimeout(reslove, time)) } تحميل وظيفة غير متزامنة (تخطي = 0) { بيانات ثابتة = انتظار axios .يحصل( "http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000000/vertical"، { رؤوس, المعلمات: { الحد: 30، // إرجاع ثابت قدره 30 عنصرًا لكل صفحة تخطي: تخطي، الأول: 0، الترتيب: "ساخن"، }, } ) .ثم((الدقة) => { إرجاع res.data.res.vertical }) .catch ((يخطئ) => { console.log(يخطئ) }) في انتظار تنزيل الملف (البيانات) انتظار النوم (3000) إذا (تخطي <1000) { الحمل (تخطي + 30) } آخر { console.log ("اكتمل التنزيل") } } وظيفة غير متزامنة تنزيل الملف (البيانات) { لـ (دع الفهرس = 0؛ الفهرس < data. length؛ فهرس ++) { عنصر ثابت = البيانات[الفهرس] // المسار الذي سيتم تنزيل الصورة فيه const filePath = `${__dirname}/beauty` في انتظار التنزيل (item.wp، filePath، { اسم الملف: item.id + ".jpeg"، رؤوس, }).ثم(() => { console.log("اكتمل تنزيل ${item.id}") يعود }) } }في كود
التحميل () أعلاه،
يجب عليك أولاً تعيين User-Agent
وتعيين تأخير لمدة 3 ثوانٍ، وهذا يمكن أن يمنع الخادم من حظر الزاحف وإرجاع 403 مباشرة.
ما عليك سوى استخدام node index.js
وسيتم تنزيل الصورة تلقائيًا.
,
بتجربة البحث في برنامج WeChat المصغر لـ " Watermelon Gallery ".
https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c5301b8b97094e92bfae240d7eb1ec5e~tplv-k3u1fbpfcp-zoom-1.awebp?