Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bin-huang/nodespider
[DEPRECATED] Simple, flexible, delightful web crawler/spider package
https://github.com/bin-huang/nodespider
async crawl crawler node pipeline promise spider web
Last synced: 10 days ago
JSON representation
[DEPRECATED] Simple, flexible, delightful web crawler/spider package
- Host: GitHub
- URL: https://github.com/bin-huang/nodespider
- Owner: Bin-Huang
- License: apache-2.0
- Created: 2016-11-27T07:34:04.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-02-27T22:43:08.000Z (over 1 year ago)
- Last Synced: 2024-10-11T09:39:20.293Z (26 days ago)
- Topics: async, crawl, crawler, node, pipeline, promise, spider, web
- Language: TypeScript
- Homepage:
- Size: 5.52 MB
- Stars: 38
- Watchers: 4
- Forks: 4
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# DEPRECATED / 不再维护
其实这个框架用起来还不错,只是我暂时没有更多兴趣来维护它
----------------------------
NodeSpider 是基于 Nodejs 的新一代爬虫框架。
# Feature
- **开箱即用**,用最少的代码开发五脏俱全的爬虫程序
- **计划规则与任务相分离**,再复杂的爬取需求也可以轻松实现
- **简单好用的数据管道**,保存抓取的数据是一件轻松的事情
- **自动转码 utf8、jQ选择器**……可爱的小功能该有的都有
- **性能优异**,你对异步并发有绝对的控制自由
- **丰富、简约的拓展接口**,玩在手里就像灵活的积木
- 支持现代 promise 和 async function# Install
npm:
```
npm install nodespider --save
```yarn:
```
yarn add nodespider
```# Example
```javascript
const { Spider, jqPlan, csvPipe } = require("nodespider")
const s = new Spider()// 声明一个数据管道
s.pipe(csvPipe({
name: "data",
path: "./data.csv",
items: ["url", "count"],
}))// 声明一个爬取计划
s.plan(jqPlan({
name: "extract",
toUtf8: true, // 自动转码为 utf8
retries: 3, // 失败自动重试
handle: ($, current) => {
const title = $("title").text() // 你想要的 jq 选择器
console.log(title)
s.save("data", {
count: $("body").text().length,
url: current.url,
}) // 使用管道保存数据
s.addU("extract", $("a").urls()) // 添加新任务
},
}))s.add("extract", "https://github.com/Bin-Huang/NodeSpider") // 添加新任务
```# Document
[设置 Options](./doc/cn/option.md)
[爬取计划 Plan](./doc/cn/plans.md)
[数据管道 Pipe](./doc/cn/pipes.md)
[方法 API](./doc/cn/method.md)
[事件 Events](./doc/cn/event.md)
# 与 0.9.x 版本的不同
当前版本几乎是 0.9 的重构,不管是 api 还设计理念,大部分均已改变。如果你的项目依赖 0.9.x 版本,这里保留了 [0.9.3 版本文档](./doc/0.9.3/doc.md)
# Contribute
- 任何疑问、建议、Bug,欢迎提交 `Issuse`
- 分享这个年轻的项目给其他开发者、社区、邮件组
- 欢迎 `Pull Request`,尤其是:
- 翻译文档到其他语言
- 文档的修改和补充
- ……