记录一下 node.js 写爬虫的心得。
目标:爬取自己博客头像下方的古诗,如下
首先需要新建一个项目,技术栈是 ts-node + typescript:
$ na init
$ ni -D typescript tslib @types/node ts-node
然后发请求、存数据、提取信息、保存信息一气呵成:
import https from "https";
https.get("https://barwe.cc", (res) => {
let content: string = "";
res.on("data", (chunk) => (content += chunk));
res.on("end", () => {
const re = /class="motto_day_words".*?src="(.*?)"/.exec(content);
if (re) {
https.get(re[1], (r) => {
let s: string = "";
r.on("data", (chunk) => (s += chunk));
r.on("end", () => {
const x = /<text .*>(.*)<\/text>/.exec(s);
if (x) console.log(x[1]);
});
});
}
});
});
记一下知识点:
http
&https
库提供了请求方法(例如get
)请求指定 URL 的页面数据- 请求方法接受一个回调函数用于处理请求完毕后的页面数据,该回调只有一个参数
- 页面数据是分段异步拿到的,需要监听 data 事件处理分段数据
- 监听 end 事件在数据取完之后做一些事情,例如提取出博客头像下的古诗文
- 这里直接用正则匹配古诗文的 URL,然后再次执行请求,再次正则匹配,然后打印古诗
具体细节以后在慢慢学习。先看效果,一个丑陋的爬虫就写好了,还不错哈哈哈
评论区