830 个!
看阮一峰的「科技爱好者周刊」一段时间了,其中工具/软件栏目安利的一些东西极大开拓眼界,用起来赏心悦目的今天心血来潮想把这部分内容给爬下来,用了一个多小时使用了 Node.js + Cheerio 进行爬取并成功输出到 JSON 文件中。
后续研究下文章的许可证,看能不能整理成一个文章/页面放到本站,按照行业/技术栈分类、排名供大家研究。
爬取流程
- 爬取博客分类页面,解析并获取所有文章 URL
- 挨个爬取文章 URL,解析并获取工具推荐内容
- 保存
流程看似简单,中间还是遇到一些坑,如果你需要运行,需要的依赖是:
yarn add axios cheerio html-to-md lowdb |
- axios: 比较好用的一个 HTTP 请求库
- cheerio: HTML 解析、选择器、提取库
- html-to-md: HTML 保存为 markdown
- lowdb: 将爬取下来的内容存储到文件中,lowdb 是一个 JSON 文件数据库,使用详见更轻量级的本地文件数据库 lowDB 实现 CRUD
Cheerio 简介
Cheerio 是 Node.js 环境中 DOM 操作库,用来解析 HTML 非常容易上手。
Cheerio 实现了核心 jQuery 的子集。Cheerio 从 jQuery 库中消除了所有 DOM 不一致和浏览器差异,从而揭示了其真正华丽的API。
const cheerio = require('cheerio'); |
代码实现
代码实现很简单,只要逻辑清晰按顺序依次来就能搞定,cheerio 中还遇到一个编码的坑:Nodejs &#x 开头 unicode cheerio 乱码
const axios = require('axios') |
样例数据
数据太多,只截取了一部分出来
{ |
样例内容
样例内容是根据爬取结果,使用 JS 自动输出出来的:
一个极简的 CSS 默认样式库,目的是为 HTML 裸标签提供美观的样式。
Chrome 浏览器插件,互联网档案馆的官方版本,可以查看一个网页的历史版本,包括那些已经无法访问的网页。
一个反向代理服务器,可以将内网的服务映射到公网。
一个命令行的 JSON 数据查询工具,有更简单的查询语法。
一个命令行的目录树浏览工具,可以作用ls
命令的替代品。
一个 JavaScript 工具,可以将 node.js 模块转成单个的 JS 文件,替代 Webpack 这样的打包工具。
一个 Hexo 的主题,可以用来制作速查表(cheatsheet)网站,参见 devhints.io 的例子。(@glazec 投稿)
网页模拟黑夜中萤火虫飞舞的效果。
一个 Node.js 模块,用于 PNG 图片的解码和编码。(@vivaxy 投稿)
10、showdoc
一个技术文档网站的服务端,适合展示团队的技术文档、API 文档。(@star7th 投稿)
将打印的数学公式转成 LaTex 代码的工具。
命令行工具,可以显示你的 Gmail 邮箱的统计数据。
一个命令行工具,使用公钥/私钥对文件进行解密和加密,用法很简单。
开源的 Web 端 RSS 阅读器,基于 Python。(@guyskk 投稿)
一个引入 V8 引擎的 Python 模块,使得 Python 程序里面可以写 JavaScript 代码。
一个可以自己架设的 Youtube 替代品,可以上传视频在网页观看,基于 Node.js。
一个使用各平台的 WebView 控件,构建跨平台桌面应用的 JavaScript 框架。(@mantou132 投稿)
Chrome 浏览器插件,可以三维显示 GitHub 的提交统计。(@ryuzheng 投稿)
获取占位图像的网站,所有生成的图像都是艺术化的几何图形。
10、Terrastruct
一个在线的架构图、流程图工具。
转载自:阮一峰的博客