抓取网页生成电子书(上文中采集到的所有文章列表的信息整理了)
优采云 发布时间: 2022-03-17 14:23抓取网页生成电子书(上文中采集到的所有文章列表的信息整理了)
在这个文章中,我们将从上面的采集中整理出所有文章列表的信息,启动采集文章并生成静态html文件准备好了。先来看看我的采集的效果。我的博客目前有77篇文章文章,不到1分钟就全部生成了采集。这里我剪切了一些图片,文件名是用文章的id生成的,生成的文章,我写了一个简单的静态模板,所有的文章都是按照这个模板生成的。
项目结构:
好,接下来,我们来解释一下这个文章的主要功能:
1、抓取文章,主要抓取文章的标题、内容、超链接、文章id(用于生成静态html文件)
2、根据jade模板生成html文件
一、爬行文章如何?
很简单,类似于上面抓取文章列表的实现
function crawlerArc( url ){
var html = '';
var str = '';
var arcDetail = {};
http.get(url, function (res) {
res.on('data', function (chunk) {
html += chunk;
});
res.on('end', function () {
arcDetail = filterArticle( html );
str = jade.renderFile('./views/layout.jade', arcDetail );
fs.writeFile( './html/' + arcDetail['id'] + '.html', str, function( err ){
if( err ) {
console.log( err );
}
console.log( 'success:' + url );
if ( aUrl.length ) crawlerArc( aUrl.shift() );
} );
});
});
}
参数url是文章的地址。抓取到文章的内容后,调用filterArticle(html)过滤出需要的文章信息(id、title、hyperlink、content),然后使用jade的renderFile api替换模板内容,
模板内容替换后,肯定需要生成html文件,所以使用writeFile来写文件。写入文件时,使用 id 作为 html 文件的名称。这是生成静态html文件的实现,
接下来就是循环生成静态html文件,也就是下面这行:
if (aUrl.length) crawlerArc(aUrl.shift());
<p>aUrl 保存我博客的所有文章 url,每次采集 写完一篇文章文章,删除当前文章 url,让下一个