nodejs的简单爬虫
闲聊
看代码啦:
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的简单爬虫相关推荐
- nodejs实现新闻爬虫
nodejs实现新闻爬虫 作为费德勒的铁杆粉丝,每天早上都会在新浪体育里面的网球频道浏览费德勒新闻.由于只关注费德勒的新闻,所以每次都要在网页中大量的新闻中筛选相关信息,感觉效率好低,所以用node写 ...
- python_2开发简单爬虫
2017年12月03日 16:43:01 独行侠的守望 阅读数:204 标签: python爬虫 更多 个人分类: Python 编辑 版权声明:本文为博主原创文章,转载请注明文章链接. https: ...
- Golang实现简单爬虫框架(4)——队列实现并发任务调度
前言 在上一篇文章<Golang实现简单爬虫框架(3)--简单并发版>中我们实现了一个最简单并发爬虫,调度器为每一个Request创建一个goroutine,每个goroutine往Wor ...
- python简单爬虫程序分析_[Python专题学习]-python开发简单爬虫
掌握开发轻量级爬虫,这里的案例是不需要登录的静态网页抓取.涉及爬虫简介.简单爬虫架构.URL管理器.网页下载器(urllib2).网页解析器(BeautifulSoup) 一.爬虫简介以及爬虫的技术价 ...
- 在Linux系统安装Nodejs 最简单步骤
在Linux系统安装Nodejs 最简单步骤 1.去官网下载和自己系统匹配的文件: 英文网址:https://nodejs.org/en/download/ 中文网址:http://nodejs.cn ...
- 使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图
第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到"煎蛋网xxoo"网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保 ...
- 第3章 简单爬虫架构
第一节 python简单爬虫架构 1.爬虫调度端 2. 爬虫:URL管理器.网页下载器.网页解析器 3.价值数据 第二节 python简单爬虫架构的动态 转载于:https://www.cnblogs ...
- 【Python】学习笔记总结7(简单爬虫)
文章目录 七.Python简单爬虫 1.重要知识与技能 2.使用re表达式抓取网页文件 3.使用requests抓取网页 4.使用re正则表达式提取数据 5.使用xPath工具提取数据 6.使用Bea ...
- .net core 实现简单爬虫—抓取博客园的博文列表
一.介绍一个Http请求框架HttpCode.Core HttpCode.Core 源自于HttpCode(传送门),不同的是 HttpCode.Core是基于.net standard 2.0实现的 ...
- python 百度百科 爬虫_python简单爬虫
爬虫真是一件有意思的事儿啊,之前写过爬虫,用的是urllib2.BeautifulSoup实现简单爬虫,scrapy也有实现过.最近想更好的学习爬虫,那么就尽可能的做记录吧.这篇博客就我今天的一个学习 ...
最新文章
- vuecli 编译后部署_基于vue-cli 打包时抽离项目相关配置文件详解
- hdu1247 字典树或者hash
- html制作百度首页的图片不显示,html实现像百度的首页效果一样的背景图(代码)...
- sql 查看某用户的连接数 以及 如何删除该用户的会话
- 盘点Win10系统的实用“小设计”
- 亚信安全发布“安全定义边界”2020发展理念 赋能企业在5G时代的数字化安全运营能力
- 了解情况的 飞鸽传书官方网站 时候
- 带你入门SpringCloud统一配置 | SpringCloud Config
- 网页实现微信扫描二维码登录
- centOS7 更改主机名localhost.localdomain
- cat环境搭建及springboot项目接入
- DES加密算法(框图流程详细分析)(C++实现)
- 视频渲染靠cpu还是显卡 视频渲染的作用是什么
- 腾达f3虚拟服务器,腾达(Tenda)F3路由器用手机怎么设置?
- 从零开始学USB(一、基础知识1)
- 云计算之概念——IaaS、SaaS、PaaS、Daas
- 为什么魂斗罗只有 128KB 却可以实现那么长的剧情?
- linux下下载基因组程序,从 NCBI 批量下载基因组的方法
- star邀请码卡密获取以及使用方法
- 打了平安的新股,可惜一签没中