提供了一种简单的方式来控制浏览器,可以在网页中执行自动化操作,如获取网页标题、自动填写表单等。
简单例子
package main import ( "github.com/sohaha/zlsgo/zlog" "github.com/zlsgo/browser" ) func main() { b, err := browser.New() if err != nil { zlog.Error(err) return } defer b.Close() err = b.Open("https://github.com/sohaha", func(p *browser.Page) error { // 获取网页标题 zlog.Info(p.MustElement("title").Text()) return nil }) if err != nil { zlog.Error("执行失败", err) return } zlog.Success("执行完毕") }
切换请求模式
直接通过 go 发起请求,并且共用 Cookie
err = b.Open("https://github.com/sohaha", func(p *browser.Page) error { // 保存 Cookie p.SavePageCookie() return nil }) // 直接发起请求 resp, err := b.Request("GET", "https://github.com/sohaha")
分支处理
name, ele, err := p.RaceElement(map[string]browser.RaceElementFunc{ "success": { Element: func(p *browser.Page) (bool, *browser.Element) { return p.HasElement(`#success`) }, Handle: func(element *browser.Element) (retry bool, err error) { // 分支处理 return false, nil }, }, "Failure": { Element: func(p *browser.Page) (bool, *browser.Element) { return p.HasElement(`#failure`) }, }, }) zlog.Debug("进入的分支是: " + name)
示例功能
屏蔽图片
package main import ( "github.com/sohaha/zlsgo/zlog" "github.com/zlsgo/browser" ) func main() { b, _ := browser.New(func(o *browser.Options) { // 开启调试 o.Debug = true // 劫持请求 o.Hijack = func(b *browser.Hijack) (stop bool) { // 屏蔽 图片,字体 请求 if b.IsFont() || b.IsImage() { b.Abort() return true } return b.HijackRequests(func(d *browser.HijackData, err error) bool { return false }) } // 或者 配置 Flags 屏蔽图片 // o.Flags["blink-settings"] = "imagesEnabled=false" }) b.Open("https://github.com/sohaha", func(p *browser.Page) error { zlog.Info(p.MustElement("title").Text()) return nil }, func(o *browser.PageOptions) {}) }