VUE3.0 をすぐに始める方法: 学習に入る
こんにちは、皆さん、私は Xiaoma です。なぜそんなにたくさんの写真をダウンロードする必要があるのですか? 数日前、uni-app + uniCloud を使用して壁紙アプレットを無料でデプロイしました。その後、アプレットのコンテンツを埋めるためにいくつかのリソースが必要です。
まずプロジェクトを初期化し、 axios
とcheerio
をインストールします
npm init -y && npm i axios Cheerio
cheerio
axios
、サーバー側の jquery API です。 dom;
const axios = require('axios') const チェリオ = require('チェリオ') function getImageUrl(target_url,containerEelment) { let result_list = [] const res = await axios.get(target_url) const html = res.data const $ = チェリオ.load(html) const result_list = [] $(containerEelment).each((要素) => { result_list.push($(要素).find('img').attr('src')) }) 結果リストを返す この
ようにして、ページ内の画像の URL を取得できます。次に、URLに従って画像をダウンロードする必要があります。
方法 1: 組み込みモジュール「https」と「fs」を使用する
nodejs を使用したファイルのダウンロードは、組み込みパッケージまたはサードパーティのライブラリを使用して実行できます。
GET メソッドは、ダウンロードするファイルを取得するために HTTPS で使用されます。 createWriteStream()
書き込み可能なストリームを作成するために使用されるメソッドです。このメソッドは、ファイルの保存場所であるパラメーターを 1 つだけ受け取ります。 Pipe()
読み取り可能なストリームからデータを読み取り、書き込み可能なストリームにデータを書き込むメソッドです。
const fs = require('fs') const https = require('https') //画像のURL const url = 'GFG.jpeg' https.get(url, (res) => { // 画像はこのパスに保存されます const path = `${__dirname}/files/img.jpeg` const filePath = fs.createWriteStream(パス) res.pipe(ファイルパス) filePath.on('finish', () => { ファイルパス.close() console.log('ダウンロードが完了しました') }) })
方法 2: DownloadHelper
npm install node-downloader-helper
以下は、Web サイトから画像をダウンロードするコードです。オブジェクト dl は、DownloadHelper クラスによって作成され、
File 変数にはダウンロードされる画像の URL が含まれ、filePath 変数には保存されるファイルへのパスが含まれます。
const { DownloaderHelper } = require('node-downloader-helper') //画像のURL const ファイル = 'GFG.jpeg' // 画像がダウンロードされるパス const filePath = `${__dirname}/files` const dl = 新しい DownloaderHelper(ファイル, ファイルパス) dl.on('終了', () => console.log('ダウンロード完了')) dl.start()
メソッド 3: ダウンロードを使用します。
これは npm master sindresorhus によって作成されています。使い方は非常に簡単です。
以下は、Web サイトから画像をダウンロード
するためのコードです。ダウンロード関数は、ファイルとファイル パスを受け取ります。
const download = require('ダウンロード') // 画像のURL const ファイル = 'GFG.jpeg' // 画像がダウンロードされるパス const filePath = `${__dirname}/files` ダウンロード(ファイル, ファイルパス).then(() => { console.log('ダウンロードが完了しました') })
元々、Baidu の壁紙をクロールすることを目的としていましたが、解像度が十分ではなく、透かしなどが含まれていました。その後、グループの友人が API を見つけました。これは、おそらく特定のモバイル APP の高解像度の壁紙でした。 、直接使用できました ダウンロードURLを取得した後、直接使用しました。
以下は完全なコードです
const download = require('download') const axios = require('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', } 関数スリープ(時間) { return new Promise((reslove) => setTimeout(reslove, time)) } 非同期関数ロード(スキップ = 0) { const data = axios を待つ 。得る( 'http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000000/vertical', { ヘッダー、 パラメータ: { limit: 30, // ページごとに 30 項目を返す固定のスキップ: Skip, 最初: 0、 注文:「ホット」、 }、 } ) .then((res) => { res.data.res.vertical を返す }) .catch((err) => { コンソールログ(エラー) }) ダウンロードを待つファイル(データ) スリープを待つ(3000) if (スキップ < 1000) { ロード(スキップ + 30) } それ以外 { console.log('ダウンロードが完了しました') } } 非同期関数 downloadFile(data) { for (let インデックス = 0; インデックス < data.length; インデックス++) { const item = データ[インデックス] // 画像がダウンロードされるパス const filePath = `${__dirname}/beauty` ダウンロードを待つ(item.wp, filePath, { ファイル名: item.id + '.jpeg'、 ヘッダー、 }).then(() => { console.log(`${item.id} のダウンロードが完了しました`) 戻る }) } }上記の
load()のコードでは、
最初にUser-Agent
設定し、3秒の遅延を設定する必要があります。これにより、サーバーがクローラをブロックして直接403を返すことを防ぐことができます。
node index.js
使用するだけで、画像が自動的にダウンロードされます。
、
「スイカギャラリー」のWeChatミニプログラム検索体験
https://p6-juejin.byreimg.com/tos-cn-i-k3u1fbpfcp/c5301b8b97094e92bfae240d7eb1ec5e~tplv-k3u1fbpfcp-zoom-1.awebp?