使用node.js做爬蟲
阿新 • • 發佈:2020-07-17
本文整理自你不知道的 node 爬蟲原來這麼簡單
環境:cheerio,用來解析html 安裝命令:npm install cheerio
const https = require('https'); const cheerio = require('cheerio'); const fs = require('fs'); https.get('https://movie.douban.com/top250', function(res){ let html = ''; res.on('data', function(chunk){ html+=chunk; }) res.on('end', function(){ console.log(html); const $ = cheerio.load(html); let allFilms = []; $('li .item').each(function(){ const title = $('.title', this).text(); const star = $('.rating_num', this).text(); const pic = $('.pic img', this).attr('src'); allFilms.push({ title, star, pic }) }) fs.writeFile('./films.json', JSON.stringify(allFilms), function(err){ if(!err){ console.log('檔案寫入完畢'); } }) downloadImage(allFilms); }) }) function downloadImage(allFilms){ for(let i = 0; i < allFilms.length; i++){ const picUrl = allFilms[i].pic; https.get(picUrl, function(res){ res.setEncoding('binary'); let str = ''; res.on('data', function(chunk){ str+=chunk; }) res.on('end', function(){ fs.writeFile('./images/'+i+'.png', str, 'binary', function(err){ if(!err){ console.log('第'+i+'張圖片下載成功'); } }) }) }) } }
該程式碼爬取豆瓣250強電影頁面,請求的過程中,獲取到資料就做包的拼接,結束就分析拼接的檔案,利用選擇器得到想要的內容,將電影的相關資訊儲存在json檔案中,檔案內容如[{"title":"肖申克的救贖 / The Shawshank Redemption","star":"9.7","pic":"https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg"},{"title":"霸王別姬","star":"9.6","pic":"https://img3.···
下載圖片如下圖所示