0.1.0 • Published 5 years ago

sprite-nest v0.1.0

Weekly downloads
1
License
MIT
Repository
-
Last release
5 years ago

Sprite Nest

中文 | English

轻松灵活地从网络上爬取指定类型内容的数据

特性

安装

yarn add sprite-nest
# 或
npm install sprite-nest --save

开始

基本使用

比如我想在得到某一关键词在不同搜索引擎上的结果,

import SpriteNest from 'sprite-nest'
// or
// const SpriteNest = require('sprite-nest').default

const { Crawler } = SpriteNest

const keyword = 'ishihara satomi'

Crawler.search(keyword, ['google', 'baidu', 'duckduckgo']).then(res => {
  console.log(`result of searching ${keyword}: `, res)
});

自定义配置

接下来我想翻译一段话,并且想看在不同翻译器中的结果。这一次进行一些自定义配置:集群的并发数量,开启CLI中的数据监控,禁用headless模式,即使用可见的浏览器窗口。

import SpriteNest from 'sprite-nest'
const { Crawler } = SpriteNest

const sentence = 'good morning'

Crawler.translator(sentence, ['google', 'baidu', 'bing'], {
  // puppeteer-cluster配置
  cluster: { 
    maxConcurrency: 3, // default is 2
    monitor: true, // default is false
  },
  // puppeteer配置
  pptr: { 
    headless: false
  }
}).then(res => {
  console.log(`result of translating ${keyword}: `, res)
})

SpriteNest内部默认使用puppeteer-core,不会单独下载chromium,与puppeteer的具体对比可以看这里

使用Sprite对象

之前的Crawler中包含封装好的任务,包括处理列表与详情,集群执行等,其中所使用的一个关键类:Sprite类,则包含了具体执行puppetter操作的函数,这意味着你传入一个自己的Page实例即可得到执行后爬取的数据。

举个栗子,我现在想得到阿玛尼口红的数据:

import SpriteNest from 'sprite-nest'
import puppeteer from 'puppeteer'

const { Sprite } = SpriteNest;

const UseInnerSprite = async () => {
    const armaniSprite = new Sprite.LipStick.armani()
    const browser = await puppeteer.launch()
    const page = await browser.newPage()
    return await armaniSprite.getList({ page })
}

UseInnerSprite().then(lipsticks => console.log('armani lipsticks: ', lipsticks));

在这个例子仅获取了口红列表的基本数据,而Crawler.lipstick方法中同时包含了列表与详情的任务,比如口红的所有颜色与名称等。

API

Crawler

Crawler.lipstick(brands, config)

  • brands <string[]> 可用值参见Sprite->Lipstick
  • config <?CustomConfig>

Crawler.search(keyword, platforms, config)

  • keyword \<string>
  • platforms <string[]> 可用值参见Sprite->Search
  • config <?CustomConfig>

Crawler.sns(target, account, platform, config)

  • target \<string>
  • account \<Object>
    • username \<string>
    • password \<string>
  • brands <string[]> 可用值参见Sprite->SNS
  • config <?CustomConfig>

Crawler.translator(content, platforms, config)

  • content \<string>
  • platforms <string[]> 可用值参见Sprite->Translator
  • config <?CustomConfig>

Sprite

每个Sprite类都具有一个getList()getDetail()方法,取决于它的内容类型。

目前已有的sprite状态如下,打勾表示可用的:

Lipstick

  • getList && getDetail
  • armani
  • covergirl
  • cpb
  • dior
  • esteelauder
  • givenchy
  • guerlian
  • lancome
  • louboutin
  • mac
  • maquillage
  • maybelline
  • nars
  • sephora
  • tomford
  • urbandecay
  • ysl

Search

  • getList
  • baidu
  • bing
  • duckduckgo
  • google

Translator

  • getList & getDetail
  • baidu
  • bing
  • google

SNS

  • getList
  • weibo

Todo

  • testing
  • custom sprite constructor

License

MIT