0.4.0 • Published 6 months ago

request-pack v0.4.0

Weekly downloads
-
License
ISC
Repository
-
Last release
6 months ago

安装

npm install

npm install request-pack

yarn install

yarn add request-pack

使用

多线程 worker

import { Worker, utils } from 'request-pack';
import { cpus } from 'os';

new Worker({
    worker: __filename, // 使用当前文件执行子线程
    pip: cpus().length - 1, // 线程数量,默认3个

    // 主线程,添加任务
    main(worker) {
        worker.addTask(Array.from({length: 1000}).map((_, i) => ({ i }))).start();
    },

    // 子线程,执行任务  data => { i: 0 }
    thread: async (data: { i: number }) => {
        await utils.delay(Math.random() * 1000);
        console.log('执行结束 ....', data);
    },

    // 任务执行完毕
    done(worker) {
        console.log('任务全部执行完毕', worker);
    },
});

请求 request

import { request_inst, request, request_buffer } from 'request-pack'

request_inst.defaults.proxy = {
    host: "127.0.0.1",
    port: 1080
}
request_inst.defaults.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; WOW64) AppleWebKit/537.36 (KHTML, like Gecko/2010010 Safari/537.36';

// 不使用代理
request('https://www.baidu.com').then(res => {
    console.log(res);
});

// 使用代理发送请求
request('https://www.youtube.com', undefined, true).then(res => {
    console.log(res);
});

// 获取buffer
request_buffer('https://www.baidu.com/img/flexible/logo/pc/result.png').then(res => {
    // 保存图片
    // const buff = res.data;
    // fs.writeFileSync(path.resolve('./test.png'), buff);
    console.log(res);
});

HTML 转 Object html2object

import { html2object } from 'request-pack'

const html = `<html>
<head><title>标题</title></head>
<body>

<h1 class="todo"><span>Todo</span></h1>
<ul id="list">
    <li data-href="/1"><span>1</span></li>
    <li data-href="/2"><span>2</span></li>
    <li data-href="/3"><span>3</span></li>
</ul>
</body>
<html>`

const result = html2object(html, {
    title: 'title/text()',
    h1: '.todo/text()',
    h1_html: '.todo/html()',
    list: '#list li/loop(/attr(data-href), span/text())'
});

console.log(result);
// ==> result
// {
//     title: '标题',
//     h1: 'Todo',
//     h1_html: '<span>Todo</span>',
//     list: [ [ '/1', '1' ], [ '/2', '2' ], [ '/3', '3' ] ]
// }

utils

import { utils } from 'request-pack';

// utils.delay
await utils.delay(2000); // 等待 毫秒

// utils.decode
utils.decode(buffer, 'UTF-8'); // 转编码
0.4.0

6 months ago

0.3.0

1 year ago

0.3.1

1 year ago

0.2.0

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago