
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?