วิธีเริ่มต้นใช้งาน VUE3.0 อย่างรวดเร็ว: เข้าสู่การเรียนรู้
สวัสดีทุกคน ฉันชื่อ Xiaomi ทำไมฉันต้องดาวน์โหลดรูปภาพจำนวนมาก? เมื่อไม่กี่วันก่อน ฉันปรับใช้แอปเพล็ตวอลเปเปอร์ฟรีโดยใช้ uni-app + uniCloud จากนั้น ฉันต้องการทรัพยากรบางอย่างเพื่อกรอกเนื้อหาของแอปเพล็ต
ก่อนอื่นให้เริ่มต้นโปรเจ็กต์และติดตั้ง axios
และ cheerio
npm init -y && npm i axios Cheerio
axios
ใช้เพื่อรวบรวมข้อมูลเนื้อหาเว็บ cheerio
คือ jquery api บนฝั่งเซิร์ฟเวอร์ dom;
const axios = ต้องการ ('axios') const เชียร์โอ = ต้องการ ('เชียร์ริโอ') ฟังก์ชั่น getImageUrl (target_url, containerEelment) { ให้ result_list = [] const res = รอ axios.get (target_url) const html = res.data const $ = เชียร์โอ.โหลด(html) const result_list = [] $(containerEelment).each((องค์ประกอบ) => { result_list.push($(องค์ประกอบ).find('img').attr('src')) - ส่งคืนผลลัพธ์_รายการ }
ด้วยวิธีนี้ คุณจะได้รับ URL ของรูปภาพในเพจ จากนั้นคุณจะต้องดาวน์โหลดรูปภาพตาม URL
วิธีที่ 1: ใช้โมดูลในตัว 'https' และ 'fs'
การดาวน์โหลดไฟล์โดยใช้ nodejs สามารถทำได้โดยใช้แพ็คเกจในตัวหรือไลบรารีบุคคลที่สาม
วิธีการ GET ใช้กับ HTTPS เพื่อรับไฟล์ที่จะดาวน์โหลด createWriteStream()
เป็นวิธีการที่ใช้ในการสร้างสตรีมแบบเขียนได้ โดยจะได้รับเพียงพารามิเตอร์เดียวเท่านั้น ซึ่งเป็นตำแหน่งที่ไฟล์ถูกบันทึกไว้ Pipe()
เป็นวิธีการที่อ่านข้อมูลจากสตรีมที่อ่านได้และเขียนลงในสตรีมที่เขียนได้
const fs = ต้องการ ('fs') const https = ต้องการ ('https') //URL ของรูปภาพ const url = 'GFG.jpeg' https.get(url, (res) => { // รูปภาพจะถูกเก็บไว้ที่เส้นทางนี้ เส้นทาง const = `${__dirname}/files/img.jpeg` const filePath = fs.createWriteStream (เส้นทาง) res.pipe (เส้นทางไฟล์) filePath.on('เสร็จสิ้น', () => { filePath.ปิด() console.log('ดาวน์โหลดเสร็จสมบูรณ์') - })
วิธีที่ 2: DownloadHelper
npm ติดตั้ง node-downloader-helper
ต่อไปนี้เป็นรหัสสำหรับดาวน์โหลดรูปภาพจากเว็บไซต์ วัตถุ dl ถูกสร้างขึ้นโดยคลาส DownloadHelper ซึ่งได้รับพารามิเตอร์สองตัว:
ตัวแปร File ประกอบด้วย URL ของรูปภาพที่จะดาวน์โหลด และตัวแปร filePath มีเส้นทางไปยังไฟล์ที่จะถูกบันทึก
const { DownloaderHelper } = ต้องการ ('node-downloader-helper') //URL ของรูปภาพ ไฟล์ const = 'GFG.jpeg' // เส้นทางที่จะดาวน์โหลดรูปภาพ const filePath = `${__dirname}/files` const dl = DownloaderHelper ใหม่ (ไฟล์, filePath) dl.on('end', () => console.log('ดาวน์โหลดเสร็จสมบูรณ์')) dl.start()
วิธีที่สาม: ใช้การดาวน์โหลด
เขียนโดย npm master sindresorhus ใช้งานง่ายมาก
npm install download
ต่อไปนี้เป็นโค้ดสำหรับดาวน์โหลดรูปภาพจากเว็บไซต์ ฟังก์ชั่นดาวน์โหลดจะได้รับไฟล์และเส้นทางของไฟล์
ดาวน์โหลด const = ต้องการ ('ดาวน์โหลด') // URL ของรูปภาพ ไฟล์ const = 'GFG.jpeg' // เส้นทางที่รูปภาพจะถูกดาวน์โหลด const filePath = `${__dirname}/files` ดาวน์โหลด (ไฟล์, filePath).then(() => { console.log('ดาวน์โหลดเสร็จสมบูรณ์') })เดิมที
ต้องการรวบรวมข้อมูลวอลเปเปอร์ Baidu แต่ความละเอียดไม่เพียงพอ และมีลายน้ำ ฯลฯ ต่อมาเพื่อนในกลุ่มพบ API ซึ่งอาจเป็นวอลเปเปอร์ความละเอียดสูงในแอปมือถือบางตัว และสามารถใช้งานได้โดยตรง หลังจากได้ URL ดาวน์โหลดแล้วผมก็ใช้งานโดยตรง
ต่อไปนี้เป็นโค้ดที่สมบูรณ์
const download = need('download') const axios = ต้องการ ('axios') ให้ส่วนหัว = { 'ตัวแทนผู้ใช้': '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, เวลา)) - โหลดฟังก์ชัน async (ข้าม = 0) { const data = รอ axios .รับ( 'http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000000/vertical', - ส่วนหัว, พารามิเตอร์: { จำกัด: 30, // แก้ไขการส่งคืน 30 รายการต่อหน้า ข้าม: ข้าม, อันดับแรก: 0, ลำดับ: 'ร้อน', - - - .then((res) => { ส่งคืน res.data.res.vertical - .catch((ผิดพลาด) => { console.log(ผิดพลาด) - รอดาวน์โหลดไฟล์ (ข้อมูล) รอนอน(3000) ถ้า (ข้าม < 1,000) { โหลด (ข้าม + 30) } อื่น { console.log('ดาวน์โหลดเสร็จแล้ว') - - ดาวน์โหลดไฟล์ฟังก์ชัน async (ข้อมูล) { สำหรับ (ให้ดัชนี = 0; ดัชนี < data.length; ดัชนี ++) { รายการ const = ข้อมูล [ดัชนี] // เส้นทางที่รูปภาพจะถูกดาวน์โหลด const filePath = `${__dirname}/ความงาม` รอการดาวน์โหลด (item.wp, filePath, { ชื่อไฟล์: item.id + '.jpeg', ส่วนหัว, }).แล้ว(() => { console.log(`ดาวน์โหลด ${item.id} เสร็จสิ้นแล้ว`) กลับ - - -ในโค้ดด้านบน
load()
คุณต้องตั้งค่า 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?