美文网首页
2018-07-27 node实例一

2018-07-27 node实例一

作者: 16孙一凡通工 | 来源:发表于2018-07-27 20:47 被阅读0次

node简单的爬东西

第一种方式

1.下载
npm install http,cheerio --save
2.初始化url并调用封装函数
var url = "http://www.baidu.com"; //初始url
function fetchPage(x) { //封装了一层函数
startRequest(x);
}
fetchPage(url);
3.读取网页的内容,同时
var html={};
res.on('data',function(chunk){
html+=chunk;
});//读取操作
4.调用cheerio,
将读取的网页buffer内容转换为html代码,
res.on('end',function(){
var =cheerio.load(html); ar l=('#u').find('a').html();//这一步是将html代码中提取特定的内容,
因网页和你想提取的内容不同而不同
console.log(l);
//输出了结果
简单爬取

第二种方式 进阶篇

1.下载request,cheerio,fs
npm install request,cheerio,fs --save
2.使用request模块读取网页内容
url = 'http://movie.douban.com/subject/25724854/';
//这里是举个例子而已,豆瓣的具体的电影网址可以自己替换
var html = '';
html = request('GET', url).getBody().toString();
3.调用cheerio模块分析处理html
var =cheerio.load('html'); var info =('#info');
// 获取电影名
var movieName = ('#content>h1>span').filter(function(i,el){ return(this).attr('property') === 'v:itemreviewed';
}).text();
// 获取影片导演名
var directories = '- 导演:' + ('#info span a').filter(function(i,el){ return(this).attr('rel') === 'v:directedBy';
}).text();
// 获取影片演员
var starsName = '- 主演:';
('.actor .attrs a').each(function(i,elem){ starsName +=(this).text() + '/';
});
// 获取片长
var runTime = '- 片长:' + ('#info span').filter(function(i,el){ return(this).attr('property') === 'v:runtime';
}).text();
// 获取影片类型
var kind = ('#info span').filter(function(i,el){ return(this).attr('property') === 'v:genre'
}).text();
// 处理影片类型数据
var kLength = kind.length;
var kinds = '- 影 片类型:';
for (i = 0; i < kLength; i += 2){
kinds += kind.slice(i,i+2) + '/';
}
// 获取电影评分和电影评分人数
// 豆瓣
var DBScore = ('.ll.rating_num').text(); var DBVotes =('a.rating_people>span').text().replace(/\B(?=(\d{3})+$)/g,',');
var DB = '- 豆 瓣评分:' + DBScore + '/10' + '(' + 'from' + DBVotes + 'users' + ')';
var data = movieName + '\r\n' + directories + '\r\n' + starsName + '\r\n' + runTime + '\r\n' + kinds + '\r\n'+ DB +'\r\n';
4.输出并写入文件
console.log(data);
fs.appendFile('dbmovie.txt', data, 'utf-8', function(err){
if (err) throw err;
else console.log('大体信息写入成功'+'\r\n' )
});
如果要问模块的具体用法,自行百度
这只是两个小demo 。。。

相关文章

  • 2018-07-27 node实例一

    node简单的爬东西 第一种方式 1.下载npm install http,cheerio --save2.初始...

  • 加载第三方SDK作为node_modules模块

    SDK安装到项目node_modules模块实例 下载tablestore(表格存储)的Node SDK 将下载的...

  • Elasticsearch基础

    Elasticsearch天然是分布式,由一个或者多个节点实例组成Node节点(服务程序运行实例)Index索引(...

  • zookeeper

    简介 配置 node1上操作单实例 集群配置 测试

  • CocosCreator中,让某Node从A点缓动至B点

    使用方式 外部需实例化和销毁类(NodeAttrSwitchCtr)对象,实例化时需传入要控制的Node。 外部可...

  • Node学习指南

    为什么要有Node子进程 node遵循的是单线程单进程的模式,node的单线程是指js的引擎只有一个实例,且在no...

  • 三、render

    参考render 一、Vue 的 _render 方法是实例的一个私有方法,它用来把实例渲染成一个虚拟 Node。...

  • Vue.js 源码学习笔记3 数据驱动(中)

    render Vue 的_render方法是实例的一个私有方法,它用来把实例渲染成一个虚拟 node( DOM 当...

  • solr 7.6.0 cloud 部署

    一 单机多实例&多台机器 1. 下载solr-7.6.0 并复制成两个文件夹(node) node8983 : s...

  • Node.js多核处理

    简介 单个 Node.js 实例运行在单个线程中。 为了充分利用多核系统,有时需要启用一组 Node.js 进程去...

网友评论

      本文标题:2018-07-27 node实例一

      本文链接:https://www.haomeiwen.com/subject/seagmftx.html