Matrix67 有大量好玩的内容,可惜作者一直使用这个奇怪的博客,没有索引分类什么的,只有一页页看,我一气之下写了一个爬虫,把所有文章链接和标题打印了出来。供大家方便查看。
- 用到了got库——一个轻量级请求http的库
- jsdom库——用来在node端解析HTML的DOM结构的库
const got = require('got')
const { JSDOM } = require("jsdom");
var i = 1
function startCatch(){
i++
got('http://www.matrix67.com/blog/page/'+i).then(v=>{
const dom = new JSDOM(v.body)
const nodeList = dom.window.document.querySelectorAll('.entry-title')
for(let el of nodeList){
console.log(el.innerHTML)
}
startCatch()
})
}
startCatch()
有人看出这个程序是个无限递归程序。其实
- 这个程序不是递归程序
- 这个程序也不是无限死循环
因为startCatch()的调用并非在自身里面,而是在then传入的那个函数里面。至于程序何时退出,那就是访问出错的时候,即不存在文章地址的时候。
这个小小的爬虫程序如果换成其他语言写,就很难这么简洁而优雅了。
简书有字数限制,故无法把爬取的内容发布出来。可以点击这里看
网友评论