影子叩

搜索
夜间模式◐

Rod 一个为简化自动化和爬虫设计的 devtools driver
[Go] · shadow · 发布于 · 2020-07-23 · 620 次点击 · 复制地址

管理员   shadow  · 2020-07-23 01:24:15 · 显示全部楼层 · 阅读
项目地址: https://github.com/ysmood/rod

这个库的主要原理就是利用浏览器的 devtools 可编程接口来操控浏览器。日常你可以用它自动化一些重复的页面任务,相比油猴子有更多的高级功能和 golang 强大的生态。工作上可以用它辅助集成化测试减少人力消耗。开发上可以用它简化一些传统爬虫需要费很多时间逆向工程的场景。

根目录的 readme 里有常见的问答,以及和 chromedp,puppeteer 等库的比较。

同类的项目有 chromedp,但是其存在架构设计上的问题且更新缓慢,所以我们开发了 rod,感兴趣的朋友请来试试。欢迎对自动化有兴趣的朋友加入到项目中来,这是我们的聊天室: https://discord.gg/PAaMGJw

因为问的人特别多,我们列了个表格用实际可运行的例子帮助大家直观对比 rod 和 chromedp: https://github.com/go-rod/rod/tr ... es/compare-chromedp

下面是一个打印 awesome-go 某一类别项目列表的例子:
  1. package main

  2. import (
  3.     "log"

  4.     "github.com/go-rod/rod"
  5. )

  6. func main() {
  7.     // 启动一个浏览器并新建一个页面
  8.     page := rod.New().Connect().Page("https://github.com/avelino/awesome-go")

  9.     // 获取页面里含有 "Selenium and browser control tools" 标题的下方元素
  10.     // 这里我们将获取到 p 标签下方的列表
  11.     section := page.ElementMatches("p", "Selenium and browser control tools").Next()

  12.     // 在列表里获取全部 li 标签
  13.     projects := section.Elements("li")

  14.     for _, project := range projects {
  15.         // 从 li 标签里获取 a 标签
  16.         link := project.Element("a")
  17.         
  18.         // 打印 a 里的文字,a 的链接,以及 li 里的文字
  19.         log.Println(
  20.             link.Text(),
  21.             link.Property("href"),
  22.             project.Text(),
  23.         )
  24.     }
  25. }
复制代码


免责声明:
影子论坛所发布的一切内容仅限用于学习和研究目的,请勿用于商业或者非法用途,否则一切后果由用户自负。
请支持正版得到更好的正版服务。如有侵权请邮件与我们联系处理。Mail To:swatxhim@outlook.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表