Nodejs url-extract,我的NodeJS url信息截取,快照模块
Nodejs url-extract,我的NodeJS url信息截取,快照模块
<p>Hi,大家好。作为一个NodeJS beginer,我做了一个url信息截取,快照模块,欢迎试用。</p> <p>url-extract是一个NodeJS的url信息截取模块,其使用PhantomJS进行截图,可截取url快照,以及抓取其title和description。</p> <p>项目地址:</p> https://github.com/miniflycn/url-extract <p> </p> <h3><span style=“font-size: 14pt;”><strong>设计图</strong></span></h3> <p><img src=“http://images.cnitblog.com/blog/372204/201309/12205700-29e94e330baa49e28611b1b3b557bfa4.jpg” alt="" /></p> <p> </p> <h3><span style=“font-size: 14pt;”><strong>依赖 & 安装</strong></span></h3> <p>由于PhantomJS 1.9.0+才开始支持Websocket,所以我们先要确定在PATH中的PhantomJS是为1.9.0以上版本。在命令行键入:</p> <blockquote> <p>$ phantomjs -v</p> </blockquote> <p>如果能返回版本号1.9.x,则可以继续操作。如果版本过低,或者出现错误,请到<a href=“http://phantomjs.org/”>PhantomJS官网</a>下载最新版本。</p> <p>如果你已经安装了Git,或者拥有Git Shell,那么在命令行键入:</p> <blockquote> <p>$ npm install url-extract</p> </blockquote> <p>进行安装。</p> <p>如果没有,那么请在下面的连接下载整个项目:</p> http://pan.baidu.com/share/link?shareid=1055562065&uk=855675565 <p> </p> <h3><span style=“font-size: 14pt;”><strong>一个简单的例子</strong></span></h3> <p>比如我们要截取百度首页,那么可以这样:</p> <div class=“cnblogs_code”> <pre>module.exports = (<span style=“color: #0000ff;”>function</span><span style=“color: #000000;”> () { </span>“use strict” <span style=“color: #0000ff;”>var</span> urlExtract = require(‘url-extract’<span style=“color: #000000;”>); urlExtract.snapshot(</span>‘http://www.baidu.com’, <span style=“color: #0000ff;”>function</span><span style=“color: #000000;”> (job) { console.log(</span>‘This is a snapshot example.’<span style=“color: #000000;”>); console.log(job); process.exit(); }); })();</span></pre> </div> <p>下面是打印:</p> <p><img src=“http://images.cnitblog.com/blog/372204/201309/12213019-2115155abd6a494e8b86a74a5b4be98b.png” alt="" /></p> <p>其中,image属性就是截图相对于工作路径的地址。我们可以使用Job的getData接口来得到更清楚的数据,例如:</p> <div class=“cnblogs_code”> <pre>module.exports = (<span style=“color: #0000ff;”>function</span><span style=“color: #000000;”> () { </span>“use strict” <span style=“color: #0000ff;”>var</span> urlExtract = require(‘url-extract’<span style=“color: #000000;”>); urlExtract.snapshot(</span>‘http://www.baidu.com’, <span style=“color: #0000ff;”>function</span><span style=“color: #000000;”> (job) { console.log(</span>‘This is a snapshot example.’<span style=“color: #000000;”>); console.log(job.getData()); process.exit(); }); })();</span></pre> </div> <p>打印就变成了这样了:</p> <p><img src=“http://images.cnitblog.com/blog/372204/201309/12213302-4b37c8e6ff5248999ce4ce382a2f6b4d.png” alt="" /></p> <p>image表示截图相对于工作路径的地址,status表示状态是否正常,true代表正常,false代表截图失败。</p> <p>更多例子请参见:</p> https://github.com/miniflycn/url-extract/tree/master/examples <p> </p> <h3><span style=“font-size: 14pt;”><strong>主要API</strong></span></h3> <p><strong>.snapshot</strong></p> <p><strong>url快照</strong></p> <ul> <li>.snapshot(url, [callback])</li> <li>.snapshot(urls, [callback])</li> <li>.snapshot(url, [option])</li> <li>.snapshot(urls, [option])</li> </ul> <blockquote> <p>url {String} 要截取的地址</p> <p>urls {Array} 要截取的地址数组</p> <p>callback {Function} 回调函数</p> <p>option {Object} 可选参数</p> <p>┝ id {String} 自定义url的id,如果第一个参数是urls,此参数无效</p> <p>┝ image {String} 自定义截图的保存地址,如果第一个参数是urls,此参数无效</p> <p><span>┝ groupId {String} 定义一组url的groupId,用于返回时候辨认是哪一组url</span></p> <p><span><span>┝ ignoreCache {Boolean} 是否忽略缓存</span></span></p> <p>┗ callback {Function} 回调函数</p> </blockquote> <p><strong>.extract</strong></p> <p><strong>url信息抓取,并获取快照</strong></p> <ul> <li>.extract(url, [callback])</li> <li>.extract(urls, [callback])</li> <li>.extract(url, [option])</li> <li>.extract(urls, [option])</li> </ul> <blockquote> <p>url {String} 要截取的地址</p> <p>urls {Array} 要截取的地址数组</p> <p>callback {Function} 回调函数</p> <p>option {Object} 可选参数</p> <p>┝ id {String} 自定义url的id,如果第一个参数是urls,此参数无效</p> <p>┝ image {String} 自定义截图的保存地址,如果第一个参数是urls,此参数无效</p> <p>┝ groupId {String} 定义一组url的groupId,用于返回时候辨认是哪一组url</p> <p>┝ ignoreCache {Boolean} 是否忽略缓存</p> <p>┗ callback {Function} 回调函数</p> </blockquote> <p><strong>Job(类)</strong></p> <p>每一个url对应一个job对象,url的相关信息由job对象存储。</p> <p><strong>Field</strong></p> <blockquote> <ul> <li>url {String} 链接地址</li> <li>content {Boolean} 是否抓取页面的title和description信息</li> <li>id {String} job的id</li> <li>groupId {String} 一堆job的组id</li> <li>cache {Boolean} 是否开启缓存</li> <li>callback {Function} 回调函数</li> <li>image {String} 图片地址</li> <li>status {Boolean} job当前是否正常</li> </ul> </blockquote> <p><strong>Prototype</strong></p> <blockquote> <ul> <li>getData() 获取job的相关数据</li> </ul> </blockquote> <p> </p> <h3><span style=“font-size: 14pt;”><strong>全局配置</strong></span></h3> <p>url-extract根目录中的config文件可以进行全局配置,默认如下:</p> <div class=“cnblogs_code”> <pre>module.exports =<span style=“color: #000000;”> { wsPort: </span>3001<span style=“color: #000000;”>, maxJob: </span>100<span style=“color: #000000;”>, maxQueueJob: </span>400<span style=“color: #000000;”>, cache: </span>‘object’<span style=“color: #000000;”>, maxCache: </span>10000<span style=“color: #000000;”>, workerNum: </span>0<span style=“color: #000000;”> };</span></pre> </div> <blockquote> <ul> <li>wsPort {Number} websocket占用的端口地址</li> <li>maxJob {Number} 每个PhantomJS线程可并发worker数</li> <li>maxQueueJob {Number} 最大等待工作数量,0表示不限制,超过该数量,任何工作都直接返回失败(即status = false)</li> <li>cache {String} 缓存实现,目前只有object实现</li> <li>maxCache {Number} 最大缓存链接数</li> <li>workerNum {Number} PhantomJS线程数,0表示和CPU数量相同</li> </ul> </blockquote> <p> </p> <h3><span style=“font-size: 14pt;”><strong>一个简单的服务例子</strong></span></h3> https://github.com/miniflycn/url-extract-server-example <p>注意,需要安装connect和url-extract:</p> <blockquote> <p>$ npm install</p> </blockquote> <p>如果你下载了网盘的文件,那么请安装connect:</p> <blockquote> <p>$ npm install connect</p> </blockquote> <p>然后键入:</p> <blockquote> <p>$ node bin/server</p> </blockquote> <p>打开:</p> <blockquote> http://localhost:3000 </blockquote> <p>查看效果。</p> <p> </p>
Nodejs url-extract,我的NodeJS url信息截取,快照模块
引言
大家好!作为一名Node.js初学者,我开发了一个URL信息截取及快照生成的模块。该模块利用PhantomJS进行网页截图,并且可以抓取网页的标题(title)和描述(description)信息。下面将详细介绍如何使用这个模块。
项目地址
你可以访问GitHub仓库获取更多源码和文档。
设计图
依赖与安装
为了确保PhantomJS版本不低于1.9.0,你需要确认你的系统环境中的PhantomJS版本:
$ phantomjs -v
如果版本低于1.9.0,建议从PhantomJS官网下载最新版本。
接着,通过npm安装url-extract
模块:
$ npm install url-extract
简单的例子
以下是一个简单的示例,展示如何截取百度首页的快照:
const urlExtract = require('url-extract');
urlExtract.snapshot('http://www.baidu.com', function(job) {
console.log('This is a snapshot example.');
console.log(job);
process.exit();
});
运行这段代码后,你会看到类似如下的输出:
{
"image": "path/to/snapshot/image",
"status": true
}
其中,image
属性表示截图的相对路径,status
属性表示任务是否成功完成。
更详细的例子
如果你想获取更多的信息,可以通过getData()
方法:
const urlExtract = require('url-extract');
urlExtract.snapshot('http://www.baidu.com', function(job) {
console.log('This is a snapshot example.');
console.log(job.getData());
process.exit();
});
输出可能包含更多详细信息,如标题、描述等。
主要API
url-extract
提供了两个主要功能:.snapshot
和 .extract
。
.snapshot
用于生成网页快照。
urlExtract.snapshot(url, [callback]);
urlExtract.snapshot(urls, [callback]);
urlExtract.snapshot(url, [option]);
urlExtract.snapshot(urls, [option]);
.extract
用于抓取网页信息并生成快照。
urlExtract.extract(url, [callback]);
urlExtract.extract(urls, [callback]);
urlExtract.extract(url, [option]);
urlExtract.extract(urls, [option]);
Job对象
每个URL都会创建一个Job对象,用于存储相关信息。
class Job {
getData() // 获取Job的相关数据
}
全局配置
可以在config
文件中配置一些全局参数,如端口号、最大任务数等。
module.exports = {
wsPort: 3001,
maxJob: 100,
maxQueueJob: 400,
cache: 'object',
maxCache: 10000,
workerNum: 0
};
服务例子
你还可以搭建一个简单的服务来使用这个模块。具体实现可以参考这里。
总结
通过上述介绍,你应该能够理解如何使用url-extract
模块进行网页快照生成和信息抓取。希望这些信息对你有所帮助!
赞
url-extract
是一个 Node.js 模块,主要用于从指定 URL 截取快照、抓取 title 和 description 等信息。以下是如何使用 url-extract
模块的示例代码:
示例代码
const urlExtract = require('url-extract');
// 截取单个 URL 的快照
urlExtract.snapshot('http://www.example.com', function (job) {
console.log('Snapshot for single URL:', job.getData());
});
// 截取多个 URL 的快照
const urls = [
'http://www.example.com',
'http://www.google.com'
];
urlExtract.snapshot(urls, function (jobs) {
jobs.forEach(function (job) {
console.log('Snapshot for URL:', job.getData());
});
});
解释
-
安装: 使用 npm 安装
url-extract
模块。$ npm install url-extract
-
加载模块: 在你的 Node.js 应用中引入
url-extract
。 -
单个 URL 快照: 使用
urlExtract.snapshot(url, callback)
方法截取单个 URL 的快照。回调函数会传入一个Job
对象,你可以通过job.getData()
获取相关信息。 -
多个 URL 快照: 使用
urlExtract.snapshot(urls, callback)
方法截取多个 URL 的快照。回调函数会传入一个Job
数组,每个Job
对象包含对应 URL 的相关信息。
更多选项
你可以在 snapshot
或 extract
方法中传入可选参数,如 id
, image
, groupId
, ignoreCache
等,以自定义截图保存地址或忽略缓存等。
以上示例展示了如何使用 url-extract
模块的基本功能,你可以根据具体需求调整参数或添加更多的功能。