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>


3 回复

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());
    });
});

解释

  1. 安装: 使用 npm 安装 url-extract 模块。

    $ npm install url-extract
    
  2. 加载模块: 在你的 Node.js 应用中引入 url-extract

  3. 单个 URL 快照: 使用 urlExtract.snapshot(url, callback) 方法截取单个 URL 的快照。回调函数会传入一个 Job 对象,你可以通过 job.getData() 获取相关信息。

  4. 多个 URL 快照: 使用 urlExtract.snapshot(urls, callback) 方法截取多个 URL 的快照。回调函数会传入一个 Job 数组,每个 Job 对象包含对应 URL 的相关信息。

更多选项

你可以在 snapshotextract 方法中传入可选参数,如 id, image, groupId, ignoreCache 等,以自定义截图保存地址或忽略缓存等。

以上示例展示了如何使用 url-extract 模块的基本功能,你可以根据具体需求调整参数或添加更多的功能。

回到顶部