cheerio爬取圖片并保存到本地

百度的介紹:cheerio是nodejs的抓取頁面模塊,為服務(wù)器特別定制的,快速、靈活、實施的jQuery核心實現(xiàn)。適合各種Web爬蟲程序。

今天就實驗下,爬取圖蟲網(wǎng)的圖片,不得不說。圖蟲網(wǎng)真的聚集好多優(yōu)秀的攝影師,照片都感覺好好啊(沒打廣告),但是大部分的圖片只能預(yù)覽,無法下載。所以:

確定你要爬取的主題照片,現(xiàn)在以微風(fēng)不燥 秋意正好這套照片為例子(教程十分具體化);

1.新建demo文件夾,創(chuàng)建tuchong.js。

然后用終端進(jìn)入此文件夾。


2.此時在終端分別安裝sync-request、cheerio、fs、request依賴,

命令行分別執(zhí)行npm install?sync-request/cheerio/fs/request

3.打開網(wǎng)站,調(diào)試,你會發(fā)現(xiàn)所有的圖片都放在此dom下


dom:$("article.post-content")

因為我們需要創(chuàng)建文件夾,所以我們拿到這組圖的主題名字


dom:$("title")

上代碼(代碼的注釋挺詳細(xì)):

const fs = require('fs') //創(chuàng)建文件、文件夾

const cheerio = require('cheerio') //cheerio爬蟲

const requests = require('sync-request') //node的網(wǎng)絡(luò)請求

const request = require('request') //利用request模塊保存圖片

var html = '';

let count = 0 // 記錄扒取的圖片數(shù)量

let imgDirName = '' // 圖片存放的目錄

let url = "https://tuchong.com/443122/15624611/"; // 目標(biāo)網(wǎng)站

// 拿到網(wǎng)站內(nèi)容轉(zhuǎn)化成html字符串

html = requests('GET', url).getBody().toString();

console.log(html)

// 調(diào)用自己的方法

filterSlideList(html)

function filterSlideList(html) {

? ? if (html) {

? ? ? ? var $ = cheerio.load(html); // 利用cheerio模塊將完整的html裝載到變量$中,之后就可以像jQuery一樣操作html了

? ? ? ? // 拿到圖片的父容器

? ? ? ? var $imgdom = $("article.post-content");

? ? ? ? // 拿到主題,并使用主題名字(名字太長,截取一下)創(chuàng)建文件夾

? ? ? ? var imgarrname = $("title").text().substr(0, 5);

? ? ? ? console.log("開始爬 " + imgarrname + " 主題的圖片")

? ? ? ? //創(chuàng)建放圖片的文件夾

? ? ? ? fs.mkdir('./img/' + imgarrname + '/', (err) => {

? ? ? ? ? ? if (err) {

? ? ? ? ? ? ? ? console.log(err)

? ? ? ? ? ? }

? ? ? ? })

? ? ? ? //取每一張圖片,并把圖片放到目錄下

? ? ? ? $imgdom.find('img').each(function(index, el) {

? ? ? ? ? ? var imgurl = $(this).attr("src"), //拿到圖片的在線鏈接

? ? ? ? ? ? ? ? imgnam = $(this).attr("alt"), //拿到圖片的標(biāo)題

? ? ? ? ? ? ? ? imgid = $(this).attr("id"); //圖片名字有可能重復(fù),取到唯一id

? ? ? ? ? ? // 利用request模塊保存圖片

? ? ? ? ? ? request(imgurl).pipe(fs.createWriteStream('./img/' + imgarrname + '/' + imgnam + imgid + '.jpg'))

? ? ? ? ? ? // '''''''''''''''''''''''''''''''''''''''''''''''''圖片目錄'''''''''''''? 拼接的圖片名? ? '''''

? ? ? ? ? ? count++;

? ? ? ? ? ? console.log(imgurl);

? ? ? ? ? ? console.log(imgnam);

? ? ? ? ? ? console.log('已爬取圖片' + count + '張');

? ? ? ? });

? ? }

}

3.執(zhí)行node tuchong.js


爬取成功
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容