用于从多个URL/端点获取和解析数据的库

200 阅读3分钟

描述

go-bulkrequest是一个简单的库,用于从多个URL/端点获取和解析数据。

项目是用go开发的。

每个批量请求都是高度可配置的,例如。

  • 你可以使用代理连接而不是直接连接,对于每个代理,请求将被并行化。
  • 你可以为每个请求设置cookies/headers/user-agent。
  • 你可以为每个请求提供自定义解析器。

安装

go get github.com/jodua/go-bulkrequest/bulkrequest

使用方法

导入库

import "github.com/jodua/go-bulkrequest/bulkrequest"

创建批量请求生成器

bulkRequest := bulkrequest.NewBulkRequest()

定制批量请求

创建者方法

SetBaseUrl - 设置所有请求的基本URL。

参数

  • baseUrl string - baseUrl
bulkRequest.SetBaseUrl("https://example.com")

SetUrls - 设置所有请求的URL后缀列表。

Params:

  • urls []string - URL后缀列表

下面的例子将为URL创建请求:

  • 基本URL + Urls[0]
  • 基本的URL + Urls[1]。
  • ...
  • 基本网址+Urls[len(Urls)-1] 。
urlList := []string{"1", "2", "3", "4", "5"}
bulkRequest.SetUrls(urlList)

SetTimeout - 设置超时,超时后请求将被终止。

参数

  • timeout time.Duration - 超时的持续时间
bulkRequest.SetTimeout(time.Second * 10)

AddHeader - 在所有请求中添加头信息。

参数

  • key string - header key
  • value string - 头部值
bulkRequest.AddHeader("X-Header", "Value")

AddCookie - 在所有请求中添加cookie。

参数

  • name string - header key
  • value string - 头部值
bulkRequest.AddCookie("Cookie", "Value")

SetDelayConfig - 设置所有请求的延迟配置。

参数

  • delayConfig *datatypes.DelayConfig - 延迟配置

延迟配置是一个结构,包含所有请求的延迟配置,它包括:

  • DelayMin time.Duration - 请求之间的最小延迟
  • DelayMax time.Duration - 请求之间的最大延迟

当从多个URL获取数据时,请求将在DelayMinDelayMax 时间之间延迟:

import "github.com/jodua/go-bulkrequest/datatypes"

delayConfig := datatypes.DelayConfig{
    DelayMin: time.Second * 1,
    DelayMax: time.Second * 2,
}

bulkRequest.SetDelayConfig(&delayConfig)

SetProxyConfig - 设置所有请求的代理配置。 如果没有设置代理配置,将直接发出请求。

参数

  • proxyConfig *datatypes.ProxyConfig - 代理配置

代理配置是一个包含所有请求的代理配置的结构,它由以下部分组成:

  • ProxyList []string - 代理服务器的列表
  • RequestsPerProxy - 将通过每个代理发送的请求的数量
import "github.com/jodua/go-bulkrequest/datatypes"

proxyList := []string{"http://proxy1:1231", "http://proxy2:1111"}

proxyConfig := datatypes.ProxyConfig{
    ProxyList:        proxyList,
    RequestsPerProxy: 5,
}

bulkRequest.SetProxyConfig(&delayConfig)

SetUserAgentConfig - 设置所有请求的用户代理配置。

参数

  • userAgentConfig *datatypes.UserAgentConfig - 用户代理配置

用户代理配置是一个包含所有请求的用户代理配置的结构,它由以下部分组成:

  • UserAgentList []string - 用户代理的列表
import "github.com/jodua/go-bulkrequest/datatypes" 

userAgentList := []string{"UserAgent1", "UserAgent2"}

userAgentConfig := datatypes.UserAgentConfig{
    UserAgentList: userAgentList,
}

bulkRequest.SetUserAgentConfig(&userAgentConfig)

SetParser - 为所有请求设置解析器。

Params:

  • parser *jsonparser.JSONParser - 指向解析器对象的指针

解析器的例子可以在github.com/jodua/go-bulkrequest/JSONParser/schemas 包中找到:

var parser = schemas.JSONPlaceholderTodoParser

bulkRequest.SetParser(&parser)

建立和执行批量请求

br := bulkRequest.Build()

fetch, err := br.Fetch()
if err != nil {
    // handle error
}
log.Println(fetch)

完整的例子可以在main.go 文件中找到。

构建JSON解析器

JSONParser结构由以下部分组成:

  • JSONSchema any - 指向JSON模式对象的指针
  • ConvertFunction func(any,string) any - 将JSON数据转换为所需格式的函数,第二个参数是请求URL
  • ValidatorFunction func(any) error - 验证JSON数据的函数
  • Output any - 指向输出结构的指针,该结构将被填入数据
  • Name string - 解析器的名称

解析器的例子可以在github.com/jodua/go-bulkrequest/JSONParser/schemas 包中找到。