爬取数据
在前面的小节中我们把准备工作和 html 代码分析都完成了。现在开始爬取数据。
把对 html 解析的工作封成一个方法,如下:
function crawlerChapter(html) {
var $ = cheerio.load(html);
var chapters = $('.panel');
var data = [];
chapters.map(function (node) {
var chapters = $(this);
var chapterTitle = chapters.find('h4').text().trim();
var sections = chapters.find('li');
var chapterData = {
chapterTitle: chapterTitle,
section: []
};
sections.map(function (node) {
var section = $(this).text().trim();
chapterData.section.push(section);
});
data.push(chapterData);
});
console.log(data);
};
解析:首先通过cheerio的 load 方法把html加载;然后对.panel通过 map 进行遍历。之后我们在 map 中 组装 要数据格式,如上述中 chapterData。再对 小节 li 进行遍历,把 section 通过 push 方法 添加到 chapterData.section 的数组中。再把组装好的数据 push 到 我们创建的空数组 data 中。最后通过console.log进行输出。
输出数据之后,我们看到数据中除了第一章中有section有值,其他的章没有值,不要担心,就是这样的。因为我们汇智网对其进行了限制,所以只能爬取到第一章中的小节标题。
在右侧代码框中第12行中调用 crawlerChapter(html) 方法,查看我们爬取出来的数据。