nodejs学习笔记(1)——网络爬虫
2018-06-24 01:51:53来源:未知 阅读 ()
不知不觉做nodejs开发已经将近一年多了,过程中学了很多,也忘了很多,所以还是坚持在博客里面留下点内容,方便以后查看。
本文主要实现一个简单的网站爬虫功能,抓取网站里面的图片以及内容。
在抓取之前用到了superagent、cheerio、request、fs模块。
superagent和http用途其实是差不多的,都是通过url模拟请求,为了记录一下用法,这里两个都用了;cheerio我个人理解就相当于一个服务端的jquery,可以对响应的内容进行过滤,用法跟jquery一样;fs模块是nodejs里面的文件操作模块。
以爬取360网站为例:
1 /** 2 * 网络爬虫 3 */ 4 5 let sup = require("superagent"); 6 let cheer = require("cheerio"); 7 let request = require("request"); 8 let fs = require("fs"); 9 const domain = "www.360.com"; 10 const url = "https://" + domain + "/"; 11 sup.get(url).end(function (err, res, body) { 12 if (err) { 13 console.log(err); 14 } else { 15 console.log('----------------------'); 16 //找出页面响应的文本内容 17 let $ = cheer.load(res.text); 18 //通过cheerio过滤内容 用法与jquery一样 如:找出里面所有的图片 19 let rst = $("img"); 20 rst.each(function (idx, item) { 21 //这里request.get的encoding一定要设置为null,api文档有说明,为null的时候响应文本会返回一个buffer 22 let imgUrl = ((item.attribs.src.includes(('http://', 'https://'))) ? url : 'http:') + item.attribs.src;
23 console.log('********************', imgUrl);
24 request.get({ url: imgUrl, encoding: null }, function (error, response, body) { 25 if (error) { 26 console.error(error); 27 } else { 28 //持续下载数据 29 let dir = domain + "/" + item.attribs.src.replace('//', ''); 30 let path = dir.split('/'); 31 //去掉最后的文件名部分 32 path.pop(); 33 if (fs.existsSync(path.join('/')) == false) { 34 //循环创建文件夹 35 var dirInfo = ""; 36 for (var i = 0; i < path.length; i++) { 37 dirInfo += path[i] + "/" 38 if (fs.existsSync(dirInfo) == false && dirInfo != '') 39 fs.mkdirSync(dirInfo); 40 } 41 } 42 //把body的的string转为object写入到文件 43 fs.writeFile(dir, body, (err) => { 44 console.log('----------------', err); 45 }) 46 } 47 }) 48 }) 49 } 50 })
以上为个人学习记录,只是一个学习的知识点分享,如果不对之处,请留言指出。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Jquery插件写法笔记整理 2020-03-29
- 如何用javascript连接access数据库 2020-03-20
- 在JavaScript中尽可能使用局部变量的原因 2020-03-08
- nodejs中如何使用async模块 2020-02-22
- nodejs的express自动生成项目框架的方法 2020-02-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash