siteadapt

package
v1.0.29 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 3, 2024 License: Apache-2.0 Imports: 16 Imported by: 0

README

go-siteadapt

站点适配 GO 版本

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Id                 string                       `mapstructure:"id"`            // 站点 Id
	Name               string                       `mapstructure:"name"`          // 站点名称
	Domain             string                       `mapstructure:"domain"`        // 域名
	Api                string                       `mapstructure:"api"`           // api 地址
	RequestDefinitions map[string]RequestDefinition `mapstructure:"requests"`      // 请求定义
	CommonFields       map[string]map[string]Field  `mapstructure:"common_fields"` // 公共字段定义
}

Config 站点配置

type ConfigReader

type ConfigReader struct {
	// contains filtered or unexported fields
}

func NewConfigReader

func NewConfigReader(data []byte) *ConfigReader

func (*ConfigReader) Read

func (c *ConfigReader) Read() (*Config, error)

type Field

type Field struct {
	Name           string           // 不需要填写
	Selector       string           `mapstructure:"selector"`      // 选择器表达式,不同解析类型有不同的表达式
	Selection      string           `mapstructure:"selection"`     // 选择器文本类型,见:FieldSelection
	Attribute      string           `mapstructure:"attribute"`     // 用于 css 选择器解析
	Filters        []Filter         `mapstructure:"filters"`       // 过滤器,链式处理
	Parent         bool             `mapstructure:"parent"`        // 是否选择父元素
	ChildrenRemove string           `mapstructure:"remove"`        // 用于 HTML 解析,移除指定元素的子元素
	Any            []Field          `mapstructure:"any"`           // 数组任意匹配,直到匹配成功
	Array          bool             `mapstructure:"array"`         // 是否为数组
	Fields         map[string]Field `mapstructure:"fields"`        // 字段嵌套,意味着可以多层解析
	FieldsRef      string           `mapstructure:"fields_ref"`    // 字段嵌套引用 CommonFields
	List           *List            `mapstructure:"list,optional"` // 列表数据配置
	TrimChars      bool             `mapstructure:"trim_chars"`    // 是否去除特殊字符
}

Field 站点请求字段定义

type Filter

type Filter struct {
	Name string `mapstructure:"name"`
	Args any    `mapstructure:"args"`
}

Filter 站点请求字段过滤器

type List

type List struct {
	Selector string `mapstructure:"selector"`
	NextPage Field  `mapstructure:"next_page"`
}

type RequestDefinition

type RequestDefinition struct {
	Parser             string            `mapstructure:"parser"`               // 解析器,见:requestParser
	Method             string            `mapstructure:"method"`               // 请求方法
	Path               string            `mapstructure:"path"`                 // 相对路径
	UseApi             bool              `mapstructure:"use_api"`              // 使用 api
	Chrome             bool              `mapstructure:"chrome"`               // 使用 chrome
	Headers            map[string]string `mapstructure:"headers"`              // 请求头
	RequiredHeaders    []string          `mapstructure:"required_headers"`     // 必填请求头
	Params             url.Values        `mapstructure:"params"`               // 请求参数
	FormData           url.Values        `mapstructure:"form_data"`            // 表单数据
	Body               any               `mapstructure:"body"`                 // 请求体
	SuccessStatusCodes []int             `mapstructure:"success_status_codes"` // 成功状态码
	List               *List             `mapstructure:"list,optional"`        // 列表数据配置
	Fields             map[string]Field  `mapstructure:"fields"`               // 字段定义
	FieldsRef          string            `mapstructure:"fields_ref"`           // 引用 CommonFields
	DisabledExtends    struct {
		Path               bool `mapstructure:"path"`
		Headers            bool `mapstructure:"headers"`
		RequiredHeaders    bool `mapstructure:"required_headers"`
		Params             bool `mapstructure:"params"`
		FormData           bool `mapstructure:"form_data"`
		Body               bool `mapstructure:"body"`
		SuccessStatusCodes bool `mapstructure:"success_status_codes"`
		List               bool `mapstructure:"list"`
		Fields             bool `mapstructure:"fields"`
		Field              bool `mapstructure:"field"`
	} `mapstructure:"disabled_extends"` // 禁用继承
}

RequestDefinition 站点请求定义 RequestDefinition

type RequestInfo

type RequestInfo struct {
	Domain     string // 域名
	RequestUrl string // 请求地址
	StatusCode int    // 状态码
}

type RequestSiteParams

type RequestSiteParams struct {
	Ctx      context.Context
	ReqId    string             // 请求 id
	Rd       *RequestDefinition // 自定义 rd
	Domain   string             // 自定义 domain
	Api      string             // 自定义 api
	Path     string             // 自定义 path
	Headers  map[string]string  // 请求头
	Params   url.Values         // url 请求参数
	FormData url.Values         // form-data 请求参数
	Body     any                // 请求体
	Env      map[string]string  // 环境变量
	UA       string             // 用户代理
	Cookie   string             // cookie
	Proxy    string             // http proxy
	SiteData []byte             // 站点数据, 直接解析不再请求站点
}

RequestSiteParams 站点请求参数

type Result

type Result struct {
	NextPage string
	Raw      []byte
	RequestInfo
}

type ResultFunc

type ResultFunc func(result Result)

type SiteAdaptor

type SiteAdaptor struct {
	// contains filtered or unexported fields
}

func NewSiteAdaptor

func NewSiteAdaptor(sc Config) *SiteAdaptor

func (*SiteAdaptor) Data

func (sa *SiteAdaptor) Data(requestSiteParams RequestSiteParams, output any, fn ResultFunc) error

Data 获取对象数据

func (*SiteAdaptor) Json

func (sa *SiteAdaptor) Json(requestSiteParams RequestSiteParams, output interface{}) error

Json 直接 JSON 转 Struct

func (*SiteAdaptor) List

func (sa *SiteAdaptor) List(requestSiteParams RequestSiteParams, output any, fn ResultFunc) error

List 获取列表数据

func (*SiteAdaptor) Raw

func (sa *SiteAdaptor) Raw(requestSiteParams RequestSiteParams, fn ResultFunc) error

Raw 获取原始数据

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL