用nodejs库cheerio抓取网页图片
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用nodejs库cheerio抓取网页图片,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2667字,纯文字阅读大概需要4分钟。
内容图文
之前都是PHP(phpQuery)抓取,但jQuery更强大, 于是用nodejs。 只是node-jquery的依赖太多,只好用cheerio
下面是一个抓取脚本:
var http = require(‘http‘); var fs = require(‘fs‘); var cheerio = require("cheerio"); var bufferhelper = require("bufferhelper"); var Iconv = require("iconv").Iconv; var mysql = require("mysql"); var myConn = mysql.createConnection({ host: ‘192.168.1.133‘, user: ‘php‘, password: ‘php‘, port:‘3306‘, database:‘crawl_db‘, charset: ‘UTF8MB4_GENERAL_CI‘, connectTimeout: 1000 }); //var IMAGE_DIR = __dirname+"/images/";var BASE_DIR = ‘/web/wwwroot/crawl_data/‘; var IMAGE_DIR = ‘public/media/cards/‘; // 根据src和id取得一个目标存放路径var create_file_dest = function(src, id){ //var basename = src.replace(/.*\/([^\/]+\.(png|jpg|jpeg|gif))$/g, "$1");//var saveTo = IMAGE_DIR + basename;var basename = id + src.substr( src.lastIndexOf(‘.‘) ); var dest = IMAGE_DIR + basename; return dest; }; // 将图片下载到目的路径var download_image = function(src, dest){ http.get(src, function(res){ var dataBuffer = new bufferhelper(); res.on(‘data‘, function(chunk){ //dataBuffer += chunk; dataBuffer.concat(chunk); }).on(‘end‘, function(){ var con = dataBuffer.toBuffer(); fs.writeFile(dest, con, function(err){ if(err) console.log("Error: write file failure ["+ dest +"]"); }); }).on(‘error‘, function(e){ console.log( "Got error:"+ e.message ); }); }); }; http.get( { hostname: ‘2gree.info‘, port: 80, path: ‘/artgenre?category_id=45&type=bbsios2‘, headers: { ‘User-Agent‘: ‘Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4‘ } }, function(res){ var html = ‘‘; var chunks = []; var dataBuffer = new bufferhelper(); res.on(‘data‘, function(chunk){ chunks.push(chunk); dataBuffer.concat(chunk); }); res.on(‘end‘, function(){ var convt = new Iconv(‘SHIFT_JIS‘, ‘UTF-8‘); html = convt.convert( dataBuffer.toBuffer() ); //fs.writeFile(__dirname+‘/hehe.html‘, html);var sql = ‘INSERT INTO xc_card(card_id, name, image) VALUES ?‘; var cats = [], values = []; var $ = cheerio.load(html); $(‘#news li‘).each(function(i){ var e = {"title":"", src:"", dest:""}; var cardId = 2001+i; e.src = $(this).find(‘.image img‘).attr(‘src‘); e.title = $(this).find(‘.title‘).text(); e.dest = create_file_dest(e.src, cardId); cats.push(e); values[i] = [cardId, e.title, e.dest]; if(!e.src) returntrue; download_image(e.src, BASE_DIR + e.dest); }); myConn.query(sql, [values], function(err){ if(err) console.log(err); myConn.end(); }); cats = JSON.stringify(cats); fs.writeFile(__dirname+‘/details.json‘, cats); }); res.on(‘error‘, function(e){ console.log(e.message); }); } );
原文:http://www.cnblogs.com/antarctican/p/5191231.html
内容总结
以上是互联网集市为您收集整理的用nodejs库cheerio抓取网页图片全部内容,希望文章能够帮你解决用nodejs库cheerio抓取网页图片所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。