侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

node爬虫 (01) 爬取静态页面的基本流程

barwe
2022-05-18 / 0 评论 / 0 点赞 / 1,340 阅读 / 860 字
温馨提示:
本文最后更新于 2022-05-22,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

记录一下 node.js 写爬虫的心得。

目标:爬取自己博客头像下方的古诗,如下

image-20220518005129330

首先需要新建一个项目,技术栈是 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,然后再次执行请求,再次正则匹配,然后打印古诗

具体细节以后在慢慢学习。先看效果,一个丑陋的爬虫就写好了,还不错哈哈哈

image-20220518004348091

0

评论区