Como começar rapidamente com o VUE3.0: Entre no aprendizado
Olá a todos, sou Xiaoma, por que preciso baixar tantas fotos? Há alguns dias, implantei um miniaplicativo de papel de parede gratuitamente usando uni-app + uniCloud. Então preciso de alguns recursos para preencher o conteúdo do miniaplicativo.
primeiro inicialize o projeto e instale axios
e cheerio
npm init -y && npm i axios cheerio
axios
é usado para rastrear conteúdo da web. cheerio
é a API jquery no lado do servidor. dom;
const eixos = require('axios') const alegria = require('cheerio') função getImageUrl(target_url, containerEelment) { deixe lista_resultados = [] const res = aguarda axios.get(target_url) const html = res.data const $ = cheerio.load(html) lista_de_resultados const = [] $(containerEelment).each((elemento) => { lista_resultados.push($(elemento).find('img').attr('src')) }) retornar lista_resultados }
Desta forma, você pode obter o URL da imagem na página. Em seguida, você precisa baixar a imagem de acordo com a url.
Método 1: Use os módulos integrados 'https' e 'fs'
O download de arquivos usando nodejs pode ser feito usando pacotes integrados ou bibliotecas de terceiros.
O método GET é usado com HTTPS para fazer o download do arquivo. createWriteStream()
é um método usado para criar um fluxo gravável. Ele recebe apenas um parâmetro, que é o local onde o arquivo é salvo. Pipe()
é um método que lê dados de um fluxo legível e os grava em um fluxo gravável.
const fs = requer('fs') const https = requer('https') //URL da imagem url const = 'GFG.jpeg' https.get(url, (res) => { //A imagem será armazenada neste caminho caminho const = `${__dirname}/files/img.jpeg` const filePath = fs.createWriteStream (caminho) res.pipe(filePath) filePath.on('terminar', () => { filePath.close() console.log('Download concluído') }) })
Método 2: DownloadHelper
npm install node-downloader-helperA
seguir está o código para baixar imagens do site. Um objeto dl é criado pela classe DownloadHelper, que recebe dois parâmetros:
A variável File contém a URL da imagem que será baixada e a variável filePath contém o caminho para o arquivo que será salvo.
const { DownloaderHelper } = require('node-downloader-helper') //URL da imagem arquivo const = 'GFG.jpeg' //Caminho no qual a imagem será baixada const filePath = `${__dirname}/arquivos` const dl = novo DownloaderHelper(arquivo, caminho do arquivo) dl.on('end', () => console.log('Download concluído')) dl.start()
método três: Use download.
Ele foi escrito por npm master sindresorhus. É muito fácil de usar.
npm install download
A seguir está o código para baixar imagens do site. A função de download recebe um arquivo e um caminho de arquivo.
const baixar = exigir('baixar') //URL da imagem arquivo const = 'GFG.jpeg' //Caminho no qual a imagem será baixada const filePath = `${__dirname}/arquivos` baixar(arquivo, caminho do arquivo).then(() => { console.log('Download concluído') })
originalmente queria rastrear papéis de parede do Baidu, mas a resolução não era suficiente e havia marcas d'água, etc. Mais tarde, um amigo do grupo encontrou uma API, que provavelmente era um papel de parede de alta definição em um determinado aplicativo móvel , e pode ser usado diretamente. Depois de obter o URL de download, usei-o diretamente.
A seguir está o código completo
const download = require('download') const axios = require('axios') deixe cabeçalhos = { 'Agente do usuário': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/87.0.4280.88 Safari/537.36', } função dormir(tempo) { retornar nova promessa((reslove) => setTimeout(reslove, time)) } carga de função assíncrona (skip = 0) { dados const = aguardar axios .pegar( 'http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000000/vertical', { cabeçalhos, parâmetros: { limit: 30, // Retorno fixo de 30 itens por página skip: skip, primeiro: 0, ordem: 'quente', }, } ) .então((res) => { retornar res.data.res.vertical }) .catch((err) => { console.log(erro) }) aguardar downloadArquivo(dados) espere dormir (3000) if (pular <1000) { carregar (pular + 30) } outro { console.log('Download concluído') } } função assíncrona downloadFile(dados) { for (deixe índice = 0; índice <data.length; índice++) { item const = dados[índice] //Caminho no qual a imagem será baixada const filePath = `${__dirname}/beauty` aguardar download (item.wp, filePath, { nome do arquivo: item.id + '.jpeg', cabeçalhos, }).então(() => { console.log(`Download ${item.id} concluído`) retornar }) } }No código acima de
load(),
você deve primeiro definir User-Agent
e definir um atraso de 3s. Isso pode impedir que o servidor bloqueie o rastreador e retorne 403 diretamente.
Basta usar node index.js
e a imagem será baixada automaticamente.
,
a experiência de pesquisa do miniprograma WeChat da " Watermelon Gallery ".
https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c5301b8b97094e92bfae240d7eb1ec5e~tplv-k3u1fbpfcp-zoom-1.awebp?