描述
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 keyvalue string- 头部值
bulkRequest.AddHeader("X-Header", "Value")
AddCookie - 在所有请求中添加cookie。
参数
name string- header keyvalue string- 头部值
bulkRequest.AddCookie("Cookie", "Value")
SetDelayConfig - 设置所有请求的延迟配置。
参数
delayConfig *datatypes.DelayConfig- 延迟配置
延迟配置是一个结构,包含所有请求的延迟配置,它包括:
DelayMin time.Duration- 请求之间的最小延迟DelayMax time.Duration- 请求之间的最大延迟
当从多个URL获取数据时,请求将在DelayMin 和DelayMax 时间之间延迟:
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数据转换为所需格式的函数,第二个参数是请求URLValidatorFunction func(any) error- 验证JSON数据的函数Output any- 指向输出结构的指针,该结构将被填入数据Name string- 解析器的名称
解析器的例子可以在github.com/jodua/go-bulkrequest/JSONParser/schemas 包中找到。