Jadual Kandungan
Imej merangkak
Cara menggunakan nodejs untuk memuat turun fail
Kod akhir
Pengalaman
Rumah hujung hadapan web tutorial js Perkongsian praktikal: Gunakan nodej untuk merangkak dan memuat turun lebih daripada 10,000 imej

Perkongsian praktikal: Gunakan nodej untuk merangkak dan memuat turun lebih daripada 10,000 imej

Mar 24, 2022 pm 07:49 PM
nodejs​

Artikel ini akan berkongsi dengan anda pengalaman praktikal nod untuk melihat cara pengarang menggunakan nodej untuk merangkak lebih daripada 10,000 kertas dinding adik perempuan saya harap ia dapat membantu semua orang.

Perkongsian praktikal: Gunakan nodej untuk merangkak dan memuat turun lebih daripada 10,000 imej

Helo, semua, saya Xiaoma, kenapa saya perlu memuat turun begitu banyak gambar? Beberapa hari yang lalu, saya menggunakan uni-app uniCloud untuk menggunakan applet kertas dinding secara percuma Kemudian saya memerlukan beberapa sumber untuk mengisi applet dengan kandungan.

Imej merangkak

Mula-mula mulakan projek dan pasang axios dan cheerio

npm init -y && npm i axios cheerio
Salin selepas log masuk

axios untuk merangkak kandungan web, cheerio Ia adalah jquery api di bahagian pelayan, kami menggunakannya untuk mendapatkan alamat imej dalam dom

const axios = require('axios')
const cheerio = require('cheerio')

function getImageUrl(target_url, containerEelment) {
  let result_list = []
  const res = await axios.get(target_url)
  const html = res.data
  const $ = cheerio.load(html)
  const result_list = []
  $(containerEelment).each((element) => {
    result_list.push($(element).find('img').attr('src'))
  })
  return result_list
}
Salin selepas log masuk

Dengan cara ini, kami boleh mendapatkan url imej dalam halaman. Seterusnya, anda perlu memuat turun imej mengikut url.

Cara menggunakan nodejs untuk memuat turun fail

Kaedah 1: Gunakan modul terbina dalam 'https' dan 'fs'

Gunakan nodejs Memuat turun fail boleh dilakukan menggunakan pakej terbina dalam atau perpustakaan pihak ketiga.

Kaedah GET digunakan dengan HTTPS untuk mendapatkan fail untuk dimuat turun. createWriteStream() ialah kaedah yang digunakan untuk mencipta strim boleh tulis Ia hanya menerima satu parameter, iaitu lokasi di mana fail disimpan. Pipe() ialah kaedah yang membaca data daripada strim boleh dibaca dan menulisnya ke strim boleh ditulis.

const fs = require('fs')
const https = require('https')

// URL of the image
const url = 'GFG.jpeg'

https.get(url, (res) => {
  // Image will be stored at this path
  const path = `${__dirname}/files/img.jpeg`
  const filePath = fs.createWriteStream(path)
  res.pipe(filePath)
  filePath.on('finish', () => {
    filePath.close()
    console.log('Download Completed')
  })
})
Salin selepas log masuk

Kaedah 2: DownloadHelper

npm install node-downloader-helper
Salin selepas log masuk

Berikut ialah kod untuk memuat turun imej daripada tapak web. Objek dl dicipta oleh kelas DownloadHelper, yang menerima dua parameter:

  1. Imej yang akan dimuat turun.
  2. Laluan di mana imej mesti disimpan selepas memuat turun.

Pembolehubah Fail mengandungi URL imej yang akan dimuat turun dan pembolehubah filePath mengandungi laluan ke fail yang akan disimpan.

const { DownloaderHelper } = require('node-downloader-helper')

// URL of the image
const file = 'GFG.jpeg'
// Path at which image will be downloaded
const filePath = `${__dirname}/files`

const dl = new DownloaderHelper(file, filePath)

dl.on('end', () => console.log('Download Completed'))
dl.start()
Salin selepas log masuk

Kaedah 3: Gunakan muat turun

ditulis oleh npm master sindresorhus, ia sangat mudah digunakan

npm install download
Salin selepas log masuk

Berikut ialah kod untuk memuat turun imej daripada tapak web. Fungsi muat turun menerima laluan fail dan fail.

const download = require('download')

// Url of the image
const file = 'GFG.jpeg'
// Path at which image will get downloaded
const filePath = `${__dirname}/files`

download(file, filePath).then(() => {
  console.log('Download Completed')
})
Salin selepas log masuk

Kod akhir

Saya pada asalnya ingin merangkak kertas dinding Baidu, tetapi peleraian tidak mencukupi, dan terdapat tera air, dsb. Kemudian, seorang rakan dalam kumpulan menemui API. Ia mungkin kertas dinding definisi tinggi pada APP mudah alih tertentu Anda boleh mendapatkan URL muat turun terus, jadi saya menggunakannya secara terus.

Berikut ialah kod lengkap

const download = require('download')
const axios = require('axios')

let headers = {
  'User-Agent':
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
}

function sleep(time) {
  return new Promise((reslove) => setTimeout(reslove, time))
}

async function load(skip = 0) {
  const data = await axios
    .get(
      'http://service.picasso.adesk.com/v1/vertical/category/4e4d610cdf714d2966000000/vertical',
      {
        headers,
        params: {
          limit: 30, // 每页固定返回30条
          skip: skip,
          first: 0,
          order: 'hot',
        },
      }
    )
    .then((res) => {
      return res.data.res.vertical
    })
    .catch((err) => {
      console.log(err)
    })
  await downloadFile(data)
  await sleep(3000)
  if (skip < 1000) {
    load(skip + 30)
  } else {
    console.log(&#39;下载完成&#39;)
  }
}

async function downloadFile(data) {
  for (let index = 0; index < data.length; index++) {
    const item = data[index]

    // Path at which image will get downloaded
    const filePath = `${__dirname}/美女`

    await download(item.wp, filePath, {
      filename: item.id + &#39;.jpeg&#39;,
      headers,
    }).then(() => {
      console.log(`Download ${item.id} Completed`)
      return
    })
  }
}

load()
Salin selepas log masuk

Dalam kod di atas, anda mesti terlebih dahulu menetapkan User-Agent dan menetapkan kelewatan 3s Ini boleh menghalang pelayan daripada menyekat perangkak dan secara langsung kembali 403.

Terus node index.js dan gambar akan dimuat turun secara automatik.

Perkongsian praktikal: Gunakan nodej untuk merangkak dan memuat turun lebih daripada 10,000 imej, Perkongsian praktikal: Gunakan nodej untuk merangkak dan memuat turun lebih daripada 10,000 imej

Pengalaman

Pengalaman carian applet WeChat "Galeri Tembikai".

https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c5301b8b97094e92bfae240d7eb1ec5e~tplv-k3u1fbpfcp-zoom-1.a>tutorial nodejs

!

Atas ialah kandungan terperinci Perkongsian praktikal: Gunakan nodej untuk merangkak dan memuat turun lebih daripada 10,000 imej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perbezaan antara versi Node.js? Bagaimana untuk memilih versi yang betul? Apakah perbezaan antara versi Node.js? Bagaimana untuk memilih versi yang betul? Aug 01, 2022 pm 08:00 PM

Node.js mempunyai versi LTS dan versi Semasa Apakah perbezaan antara kedua-dua versi ini? Artikel berikut akan membantu anda memahami dengan cepat perbezaan antara versi Node.js, dan bercakap tentang cara memilih versi yang sesuai, saya harap ia akan membantu anda.

Mari kita bincangkan tentang cara melaksanakan kumpulan proses ringan dan kumpulan benang menggunakan Node Mari kita bincangkan tentang cara melaksanakan kumpulan proses ringan dan kumpulan benang menggunakan Node Oct 14, 2022 pm 08:05 PM

Node.js ialah bahasa berutas tunggal Ia dibangunkan berdasarkan enjin V8 pada asalnya direka untuk menghuraikan dan menjalankan bahasa JavaScript pada bahagian pelayar Isu penyegerakan keadaan berbilang benang menjadikannya lebih ringan dan lebih mudah untuk digunakan.

Bagaimanakah Node.js melaksanakan pengurusan versi? 3 alat pengurusan versi praktikal untuk dikongsi Bagaimanakah Node.js melaksanakan pengurusan versi? 3 alat pengurusan versi praktikal untuk dikongsi Aug 10, 2022 pm 08:20 PM

Bagaimanakah Node.js melaksanakan pengurusan versi? Artikel berikut akan berkongsi dengan anda 3 alat pengurusan versi Node.js yang sangat praktikal, saya harap ia akan membantu anda!

Artikel ini akan membantu anda memahami prinsip npm Artikel ini akan membantu anda memahami prinsip npm Aug 09, 2022 am 09:23 AM

npm ialah alat pengurusan pakej dunia JavaScript dan merupakan alat pengurusan pakej lalai untuk platform Node.js. Melalui npm, anda boleh memasang, berkongsi, mengedarkan kod dan mengurus kebergantungan projek. Artikel ini akan membawa anda melalui prinsip npm, saya harap ia akan membantu anda!

Bagaimana untuk mengkonfigurasi dan memasang node.js dalam IDEA? Analisis ringkas kaedah Bagaimana untuk mengkonfigurasi dan memasang node.js dalam IDEA? Analisis ringkas kaedah Dec 21, 2022 pm 08:28 PM

Bagaimana untuk menjalankan nod dalam IDEA? Artikel berikut akan memperkenalkan kepada anda cara mengkonfigurasi, memasang dan menjalankan node.js dalam IDEA Saya harap ia akan membantu anda!

Apakah sumber tak segerak? Analisis ringkas kaedah Node untuk merealisasikan perkongsian konteks sumber tak segerak Apakah sumber tak segerak? Analisis ringkas kaedah Node untuk merealisasikan perkongsian konteks sumber tak segerak May 31, 2022 pm 12:56 PM

Bagaimanakah Node.js melaksanakan perkongsian konteks sumber tak segerak? Artikel berikut akan memperkenalkan kepada anda cara Node melaksanakan perkongsian konteks sumber tak segerak Mari kita bincangkan tentang penggunaan perkongsian konteks sumber tak segerak untuk kita.

Artikel untuk bercakap tentang modul fail fs dan modul laluan dalam Node (analisis kes) Artikel untuk bercakap tentang modul fail fs dan modul laluan dalam Node (analisis kes) Nov 18, 2022 pm 08:36 PM

Artikel ini menggunakan kes membaca dan menulis fail serta memproses laluan untuk mengetahui tentang modul fail fs dan modul laluan dalam Node.

Lihat cara menggunakan nodejs untuk menjana kod QR Lihat cara menggunakan nodejs untuk menjana kod QR Oct 25, 2022 am 09:28 AM

Kod QR ada di mana-mana dalam kehidupan Saya juga telah menggunakan perpustakaan zxing Java untuk menjana kod QR sebelum ini, dan ia sangat berkuasa. Tetapi sebenarnya, terdapat banyak perpustakaan pihak ketiga pada nodej yang boleh menjana kod QR. Hari ini kami menggunakan perpustakaan qrcode untuk menjana kod QR.

See all articles