aragog

A crawler

Usage no npm install needed!

<script type="module">
  import aragog from 'https://cdn.skypack.dev/aragog';
</script>

README

Aragog

Aragog is a crawler used to fetch list of a repository's issues.

Development

npm run build & npm run dev

Usage

import fs from 'fs';
import path from 'path';
import Aragog from 'aragog';
const aragog = new Aragog({
  username: 'zz1211',
  repository: 'Doraemon',
  selector: `div[id^=issue_] a[href*="/zz1211/Doraemon/issues/"][id^=issue-id-]` // optional parameters
});

(async () => {
  await aragog.openPage();
  let issueList = [];
  let list = []
  let page = 1;
  do {
    list = await aragog.fetchIssueList({
      queryConditions: {
        'utf8': true,
        page: page++,
        q: ['is:issue', 'is:open', 'label:blog', '-label:TBD ']
      }
    });
    issueList = issueList.concat(list)
  } while (list.length > 0)
  fs.writeFileSync(path.resolve(process.cwd(), './issues.json'), JSON.stringify(issueList, null, 4), 'utf8');
  await aragog.closeBrowser();
})();

Result

[
  {
    "title": "ES6 -> Javascript的类与继承在Babel的实现",
    "href": "https://github.com/zz1211/Doraemon/issues/26",
    "labels": [
      "blog",
      "javascript",
      "zon"
    ]
  },
  {
    "title": "Javascript的模块机制s",
    "href": "https://github.com/zz1211/Doraemon/issues/25",
    "labels": [
      "blog",
      "browser",
      "javascript",
      "nodejs"
    ]
  },
  {
    "title": "前端基础性攻防对象 XSS & CSRF 的介绍",
    "href": "https://github.com/zz1211/Doraemon/issues/24",
    "labels": [
      "blog",
      "browser",
      "javascript",
      "security"
    ]
  },
  {
    "title": "梳理一下 Event Loop 这个东西",
    "href": "https://github.com/zz1211/Doraemon/issues/23",
    "labels": [
      "blog",
      "browser",
      "javascript",
      "nodejs"
    ]
  },
  {
    "title": "看看webpack都打出了些什么",
    "href": "https://github.com/zz1211/Doraemon/issues/22",
    "labels": [
      "blog",
      "tool",
      "zon"
    ]
  },
  {
    "title": "简单说一下 [清除 & 闭合]浮动",
    "href": "https://github.com/zz1211/Doraemon/issues/21",
    "labels": [
      "blog",
      "css",
      "html"
    ]
  },
  {
    "title": "Git 中那些容易混淆和忽略的指令都做了些神马",
    "href": "https://github.com/zz1211/Doraemon/issues/19",
    "labels": [
      "blog",
      "tool"
    ]
  },
  {
    "title": "浅谈前端的动画",
    "href": "https://github.com/zz1211/Doraemon/issues/13",
    "labels": [
      "blog",
      "browser",
      "css"
    ]
  },
  {
    "title": "Javascript 部分重点整理",
    "href": "https://github.com/zz1211/Doraemon/issues/12",
    "labels": [
      "blog",
      "javascript"
    ]
  },
  {
    "title": "React源码分析 - Diff算法",
    "href": "https://github.com/zz1211/Doraemon/issues/11",
    "labels": [
      "blog",
      "source code",
      "zon"
    ]
  },
  {
    "title": "React源码分析 - 生命周期",
    "href": "https://github.com/zz1211/Doraemon/issues/10",
    "labels": [
      "blog",
      "source code",
      "zon"
    ]
  },
  {
    "title": "React源码分析 - 组件更新与事务",
    "href": "https://github.com/zz1211/Doraemon/issues/9",
    "labels": [
      "blog",
      "source code",
      "zon"
    ]
  },
  {
    "title": "<深入浅出Nodejs> --- 内存管理",
    "href": "https://github.com/zz1211/Doraemon/issues/8",
    "labels": [
      "blog",
      "book"
    ]
  },
  {
    "title": "React源码分析 - 事件机制",
    "href": "https://github.com/zz1211/Doraemon/issues/7",
    "labels": [
      "blog",
      "source code",
      "stick",
      "zon"
    ]
  },
  {
    "title": "React源码分析 - 组件初次渲染",
    "href": "https://github.com/zz1211/Doraemon/issues/6",
    "labels": [
      "blog",
      "source code",
      "zon"
    ]
  },
  {
    "title": "函数式编程",
    "href": "https://github.com/zz1211/Doraemon/issues/5",
    "labels": [
      "blog",
      "javascript"
    ]
  },
  {
    "title": "常规CSS元素垂直居中",
    "href": "https://github.com/zz1211/Doraemon/issues/4",
    "labels": [
      "blog",
      "css"
    ]
  },
  {
    "title": "像素和viewport",
    "href": "https://github.com/zz1211/Doraemon/issues/3",
    "labels": [
      "blog",
      "browser",
      "css",
      "html"
    ]
  },
  {
    "title": "Koa源码分析",
    "href": "https://github.com/zz1211/Doraemon/issues/2",
    "labels": [
      "blog",
      "source code",
      "zon"
    ]
  },
  {
    "title": "Javascript中装饰器的实现原理",
    "href": "https://github.com/zz1211/Doraemon/issues/1",
    "labels": [
      "blog",
      "javascript",
      "zon"
    ]
  }
]