项目地址: https://github.com/ysmood/rod
这个库的主要原理就是利用浏览器的 devtools 可编程接口来操控浏览器。日常你可以用它自动化一些重复的页面任务,相比油猴子有更多的高级功能和 golang 强大的生态。工作上可以用它辅助集成化测试减少人力消耗。开发上可以用它简化一些传统爬虫需要费很多时间逆向工程的场景。
根目录的 readme 里有常见的问答,以及和 chromedp,puppeteer 等库的比较。
同类的项目有 chromedp,但是其存在架构设计上的问题且更新缓慢,所以我们开发了 rod,感兴趣的朋友请来试试。欢迎对自动化有兴趣的朋友加入到项目中来,这是我们的聊天室: https://discord.gg/PAaMGJw
因为问的人特别多,我们列了个表格用实际可运行的例子帮助大家直观对比 rod 和 chromedp: https://github.com/go-rod/rod/tree/master/lib/examples/compare-chromedp
下面是一个打印 awesome-go 某一类别项目列表的例子:
package main
import (
"log"
"github.com/go-rod/rod"
)
func main() {
// 启动一个浏览器并新建一个页面
page := rod.New().Connect().Page("https://github.com/avelino/awesome-go")
// 获取页面里含有 "Selenium and browser control tools" 标题的下方元素
// 这里我们将获取到 p 标签下方的列表
section := page.ElementMatches("p", "Selenium and browser control tools").Next()
// 在列表里获取全部 li 标签
projects := section.Elements("li")
for _, project := range projects {
// 从 li 标签里获取 a 标签
link := project.Element("a")
// 打印 a 里的文字,a 的链接,以及 li 里的文字
log.Println(
link.Text(),
link.Property("href"),
project.Text(),
)
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.