闲聊

好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫。所以小颖就自己试着做了个爬博客园数据的demo。嘻嘻......
小颖最近养了条泰日天,自从养了我家仔仔后,我觉得我走上一条不归路,每天不到七点半就起床烧热水,然后给我家仔仔烫狗粮,给仔仔烫好狗粮后,我开始收拾自己,出门前给他再把热水瓶里的热水换了,每天跟伺候小孩一样伺候着我家小不点仔仔,然而在上周天他还是生病了,拉稀.......带宠物医院好不容易看好,医生说是低血糖,我就懵逼了,低血糖就不能让他饿着,可是他压根就不好好吃饭,我有什么办法,哎......操碎了心,祈祷吧希望我家小仔仔能健健康康快快乐乐的长大嘻嘻。

看代码啦:

1.首先先安装node。

2.新建package.json:

在自己创建的一个工程目录下打开cmd ,在里面输入命令npm init

3.新建data和img文件夹

4.新建app.js

"use strict";// 引入模块
var http = require('http');
var fs = require('fs');
var path = require('path');
var cheerio = require('cheerio');// 爬虫的UR L信息
var opt = {hostname: 'www.cnblogs.com',path: '',port: 80
};// 创建http get请求
http.get(opt, function(res) {var html = ''; // 保存抓取到的HTML源码var blogs = []; // 保存解析HTML后的数据,即我们需要的电影信息// 前面说过// res 是 Class: http.IncomingMessage 的一个实例// 而 http.IncomingMessage 实现了 stream.Readable 接口// 所以 http.IncomingMessage 也有 stream.Readable 的事件和方法// 比如 Event: 'data', Event: 'end', readable.setEncoding() 等// 设置编码res.setEncoding('utf-8');// 抓取页面内容res.on('data', function(chunk) {html += chunk;});res.on('end', function() {// 使用 cheerio 加载抓取到的HTML代码// 然后就可以使用 jQuery 的方法了// 比如获取某个class:$('.className')// 这样就能获取所有这个class包含的内容var $ = cheerio.load(html);// 解析页面// 每篇文章都在 item class 中$('#post_list .post_item .post_item_body').each(function() {// 获取图片链接var blog = {title: $('.post_item_body .titlelnk', this).text(), // 获取文章标题titleUrl: $('.post_item_body a', this).attr('href'), //文章链接地址peopleUrl: $('.post_item_summary a', this).attr('href'), // 博客地址peopleImg: $('.post_item_summary img', this).attr('src'),// 园友头像intro: $('.post_item_summary', this).text(), // 获取文章简介name: $('.post_item_foot .lightblue', this).text() // 获取文章简介
      };// 把所有文章放在一个数组里面
      blogs.push(blog);if (blog.peopleImg) {// 如果有图片则下载图片downloadImg('img/', 'http:' + blog.peopleImg);}});// 保存抓取到的文章数据saveData('data/data.json', blogs);});
}).on('error', function(err) {console.log(err);
});/*** 保存数据到本地** @param {string} path 保存数据的文件* @param {array} blogs 文章信息数组*/
function saveData(path, blogs) {// 调用 fs.writeFile 方法保存数据到本地fs.writeFile(path, JSON.stringify(blogs, null, 4), function(err) {if (err) {return console.log(err);}console.log('Data saved');});
}/*** 下载图片** @param {string} imgDir 存放图片的文件夹* @param {string} url 图片的URL地址*/
function downloadImg(imgDir, url) {http.get(url, function(res) {var data = '';res.setEncoding('binary');res.on('data', function(chunk) {data += chunk;});res.on('end', function() {// 调用 fs.writeFile 方法保存图片到本地fs.writeFile(imgDir + path.basename(url), data, 'binary',function(err) {if (err) {return console.log(err);}console.log('Image downloaded: ', path.basename(url));});});}).on('error', function(err) {console.log(err);});
}

5.打开cmd执行 node app.js

然后看data文件夹下会生成data.json文件,img文件夹下会生成许多图片。

补充

// 爬虫的UR L信息
var opt = {hostname: 'www.cnblogs.com',path: '', port: 80 };

转载于:https://www.cnblogs.com/yingzi1028/p/6554076.html

nodejs的简单爬虫相关推荐

  1. nodejs实现新闻爬虫

    nodejs实现新闻爬虫 作为费德勒的铁杆粉丝,每天早上都会在新浪体育里面的网球频道浏览费德勒新闻.由于只关注费德勒的新闻,所以每次都要在网页中大量的新闻中筛选相关信息,感觉效率好低,所以用node写 ...

  2. python_2开发简单爬虫

    2017年12月03日 16:43:01 独行侠的守望 阅读数:204 标签: python爬虫 更多 个人分类: Python 编辑 版权声明:本文为博主原创文章,转载请注明文章链接. https: ...

  3. Golang实现简单爬虫框架(4)——队列实现并发任务调度

    前言 在上一篇文章<Golang实现简单爬虫框架(3)--简单并发版>中我们实现了一个最简单并发爬虫,调度器为每一个Request创建一个goroutine,每个goroutine往Wor ...

  4. python简单爬虫程序分析_[Python专题学习]-python开发简单爬虫

    掌握开发轻量级爬虫,这里的案例是不需要登录的静态网页抓取.涉及爬虫简介.简单爬虫架构.URL管理器.网页下载器(urllib2).网页解析器(BeautifulSoup) 一.爬虫简介以及爬虫的技术价 ...

  5. 在Linux系统安装Nodejs 最简单步骤

    在Linux系统安装Nodejs 最简单步骤 1.去官网下载和自己系统匹配的文件: 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn ...

  6. 使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图

    第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到"煎蛋网xxoo"网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保 ...

  7. 第3章 简单爬虫架构

    第一节 python简单爬虫架构 1.爬虫调度端 2. 爬虫:URL管理器.网页下载器.网页解析器 3.价值数据 第二节 python简单爬虫架构的动态 转载于:https://www.cnblogs ...

  8. 【Python】学习笔记总结7(简单爬虫)

    文章目录 七.Python简单爬虫 1.重要知识与技能 2.使用re表达式抓取网页文件 3.使用requests抓取网页 4.使用re正则表达式提取数据 5.使用xPath工具提取数据 6.使用Bea ...

  9. .net core 实现简单爬虫—抓取博客园的博文列表

    一.介绍一个Http请求框架HttpCode.Core HttpCode.Core 源自于HttpCode(传送门),不同的是 HttpCode.Core是基于.net standard 2.0实现的 ...

  10. python 百度百科 爬虫_python简单爬虫

    爬虫真是一件有意思的事儿啊,之前写过爬虫,用的是urllib2.BeautifulSoup实现简单爬虫,scrapy也有实现过.最近想更好的学习爬虫,那么就尽可能的做记录吧.这篇博客就我今天的一个学习 ...

最新文章

  1. vuecli 编译后部署_基于vue-cli 打包时抽离项目相关配置文件详解
  2. hdu1247 字典树或者hash
  3. html制作百度首页的图片不显示,html实现像百度的首页效果一样的背景图(代码)...
  4. sql 查看某用户的连接数 以及 如何删除该用户的会话
  5. 盘点Win10系统的实用“小设计”
  6. 亚信安全发布“安全定义边界”2020发展理念 赋能企业在5G时代的数字化安全运营能力
  7. 了解情况的 飞鸽传书官方网站 时候
  8. 带你入门SpringCloud统一配置 | SpringCloud Config
  9. 网页实现微信扫描二维码登录
  10. centOS7 更改主机名localhost.localdomain
  11. cat环境搭建及springboot项目接入
  12. DES加密算法(框图流程详细分析)(C++实现)
  13. 视频渲染靠cpu还是显卡 视频渲染的作用是什么
  14. 腾达f3虚拟服务器,腾达(Tenda)F3路由器用手机怎么设置?
  15. 从零开始学USB(一、基础知识1)
  16. 云计算之概念——IaaS、SaaS、PaaS、Daas
  17. 为什么魂斗罗只有 128KB 却可以实现那么长的剧情?
  18. linux下下载基因组程序,从 NCBI 批量下载基因组的方法
  19. star邀请码卡密获取以及使用方法
  20. 打了平安的新股,可惜一签没中

热门文章

  1. Sqlite和mysql的区别及优缺点
  2. Object中的clone方法
  3. mysql工作原理(网络搜索整理的)
  4. GridView的使用
  5. PHP错误信息(errors)的屏蔽和显示-设置PHP.ini
  6. ECMAScript 基础--原始值和引用值
  7. 一个gSOAP web服务可以用多线程技术来处理请求
  8. Maven Plugins
  9. OSChina 周四乱弹 —— 电脑上都有监视器
  10. RedHat下通过Rdesktop连接window远程桌面