# spiderrequest

> spdier request

Latest version **1.0.7** (published 2017-10-27) · ISC license · 0 weekly downloads

## Install

```sh
npm install spiderrequest
pnpm add spiderrequest
yarn add spiderrequest
bun add spiderrequest
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.7 |
| Published | 2017-10-27 |
| First published | 2017-10-26 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Author | youthfighter |
| Maintainers | youthfighter |
| Keywords | spider, request |

## Links

- npm: https://www.npmjs.com/package/spiderrequest
- npm.io page: https://npm.io/package/spiderrequest

## Dependencies (3)

- [cheerio](https://npm.io/package/cheerio.md) ^1.0.0-rc.2
- [request](https://npm.io/package/request.md) ^2.83.0
- [iconv-lite](https://npm.io/package/iconv-lite.md) ^0.4.19

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 1.0.7 (latest) — 2017-10-27
- 1.0.6 — 2017-10-27
- 1.0.5 — 2017-10-26
- 1.0.4 — 2017-10-26
- 1.0.3 — 2017-10-26
- 1.0.2 — 2017-10-26
- 1.0.1 — 2017-10-26
- 1.0.0 — 2017-10-26

## README

spiderRequest
=======

通过简单的设置配置文件，获取扒取网页信息，返回数据。

## 起步
下面看一个简单的例子，只需设置几个简单的属性，就可以得到想要的到的数据。
```javascript
//引用spiderRequest
const spiderRequest = require("spiderrequest");

//定义一个要扒取的网页网页信息，以百度首页为例，获取‘百度一下’按钮的值
let config = {
	url: 'https://www.baidu.com/',
	encode: 'utf8',
	content: {
		'name':'btn',
		'selector': '#su',
		'value':['attr','value']
	}
};
new spiderRequest(config).getContent()
    .then((data)=>{
    	console.log(data);
    });
//输出{ btn: '百度一下', location: 'https://www.baidu.com/' }
```
## 配置
1. name:扒取数据最终以json的形式返回，那么是value获取值对应的key。
2. selector:获取对应的dom节点，遵守[cheerio](https://www.npmjs.com/package/cheerio)的语法，与jquery获取dom节点类似。需要注意的是，其实在上级dom节点的基础上找子节点。
3. eq:如果通过selector获取的dom节点有多个,通过设置eq的值确定获取那个dom节点。
4. value:数组形式，如果selector获取的节点有要获取的值，则通过以下配置直接获取值。
    - `['text']`:对节点执行`text()`
    - `['html']`:对节点执行`html()`
    - `['attr','value']`:对节点执行`attr('value')`
    - `['data','name']`:对节点执行`data('name')`
    也可以传入对象数组，用于查找其子节点的值。子节点的参数定义与`options`一致。
5. machining:定义一个函数，用于对该节点取值进行加工，例如两端去除空格，截取字符串等操作。函数接受两个参数，分别是当前节点的值和当前页面路径。需要注意的是，函数必须有返回值，并且该节点必须为值，而不能为子节点。
```javascript
'machining':(value,location)=>{
	return 'test:'+value; 
}
```

## 接口
getContent：才用es6的promise语法，通过`new spiderRequest(config)`初始化spiderRequest对象，并通过调用`getContent`方法获取爬取的
数据，该方法返回一个promise对象。

---
_Source: https://npm.io/package/spiderrequest · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
