nodejs抓取动态网页(要来开发一个属于自己的命令行小说工具用呢?)
优采云 发布时间: 2022-01-02 18:08nodejs抓取动态网页(要来开发一个属于自己的命令行小说工具用呢?)
简介:你的键盘是不是像飞一样上下?除了屏幕上黑色的控制台之外什么都看不到的极客,羡慕不已。不想要。我觉得前端很酷,一行代码就是另一个世界。 ,但在我的内心深处,我仍然觉得强迫症在不知不觉中下降了?不用着急,让Nodejs给你带来舒服有力量的好东西。本章将带您一步步开发自己的命令行工具。
Now You See Me:如果您不明白或不清楚您所说的内容,请留言。没多久,我开始一起学习,一起进步。 当然,如果你有一些想知道的内容相关的小知识点,比如cheerio bag balabala,也可以留言告知,会被放到发布内容的日程表中。嘿
1.开发这样的工具有什么用?
作者经常阅读一些网络小说,所以我们将开发一个新的章节内容,捕捉作者经常阅读的小说网站。先放一下程序运行的结果:
DaDaDa,美吗?
以下是这个项目的地址,只是一个demo。各种功能和之前的工程实践会在后面补充。
#自述
2.怎么做?
分以下几个部分解释这个内容:
- 项目结构
- 项目详情
以下是对以上目录的介绍:
目录:
bin:命令行脚本文件的入口,是package.json中bin属性对应的值得目录
node_modules:你知道的,npm 的依赖聚集地
文件:
.npmignore:就像.gitignore 文件一样,只有那些不会被npm 收录在发布目录中的文件
index.js:主程序文件
package.json:由 npm init 生成。详细描述项目情况
先介绍一下大概的设计:
很简单,就是先根据提供的小说网站链接抓取特定小说的目录导航,用相关的npm包分析上一个项目的链接,是最新的更新链接,然后拼接链接。再次向目标网站请求数据。分析检索到的内容,整理格式,修改输出,得到最终结果。
查看我们的源代码:
index.js
//用来做发送请求,经过测试的好朋友
var request = require('request');
//Node爬虫界的大佬,他的web代码分析能力不错
var cio = require('cheerio');
//装饰命令行上方的输出,添加颜色等
var colors = require('colors');
var url = require('url');
//网站网址
var webSiteUrlPrefix ='';
//小说链接
var webSiteUrl ='';
//开始请求数据
request(webSiteUrl, function(err, res, body) {
//做异常处理检查
if (!err && res.statusCode == 200) {
//Cheerio是数据处理的第一步,穿马甲
var $ = cio.load(body);
//缓存最后一个item节点
var target = $('div#list dd:last-of-type');
//通过CSS选择器过滤数据
//这里的意思
var src = target.children('a').attr('href');
//获取文章标题
var pageTitle = target.text();
//获取文章实际地址
var contentsUrl = webSiteUrlPrefix + src;
//再次请求,这次获取的是文章
的实际内容
request(contentsUrl, function(err, res, body) {
如果(错误){
返回;
} 其他{
if (res.statusCode == 200) {
var $ = cio.load(body);
//调整格式,去除多余空格
var pageContents = $('div#content').text().replace(/\s+/g,'\n');
//添加一些颜色看看
console.log(pageTitle.green +'\n\n' + pageContents.yellow);
} 其他{
返回;
}
}
})
} 其他{
console.log('错误请求');
}
});
接下来是bin/index.js的解释:
与上面的文件基本相同,唯一不同的是:
#! /usr/bin/env 节点
表示启用Node运行脚本,这也是生成命令行工具的本质
最后是package.json文件的介绍:
类似于之前的Express系列:用例子讲解如何开发自己的npm包,唯一的区别是:
“bin”:{
"n-novel": "bin/index.js"
}
这里提醒一下,这里一定要写上收录“#!/usr/bin/env node”的index.js文件路径,因为里面的文件最终会被软链接到/usr/local/bin/去里面,而且里面的程序都是脚本,如果位置不对,程序就会跑错。
3.发布流程
$ npm whoami
$ npm 发布
DaDaDa,发布成功!
4.起来,嘿
发布后,我们要检查我们的战斗结果,通过
npm install -g n-novel
安装到全世界,运行结果如下:
然后运行n-novel,稍等片刻,新出小说的最新章节会放到你的命令行中。
下一节介绍
介绍
经过以上两节的学习,我们不仅可以开发自己的包,还可以编写命令行工具。你认为我们已经起飞了吗?下一节我们将介绍如何通过持续的形成和构建来保证我们的项目代码经过良好的测试和可靠的,即持续集成:travis,测试覆盖:coveralls,查看模块依赖:david-dm,等等