基于 Golang 的 HTTP 客户端,爬虫工具 direwolf

2019-12-02 10:25:31 +08:00
 wnanbei

写了一个基于 Golang 的 HTTP 客户端,可以做为爬虫工具。因为用 Golang 发请求的时候发现有些设置很麻烦,所以参考 Python 的 Requests,写了这个工具。

地址: https://wnanbei.github.io/direwolf/

网站中有完整的中文文档,后续会继续完善和添加新的功能。有兴趣的朋友欢迎在 Gayhub 点个 star,如果有 BUG、问题或者建议,也可以在 Gayhub 的 Issues 页面与我讨论。

特性:

以下是部分简单用法的展示:

你可以像下方这样非常简单的发起一个请求:

import (
    "fmt"

    dw "github.com/wnanbei/direwolf"
)

func main() {
    resp, err := dw.Get("http://httpbin.org/get")
    if err != nil {
        return
    }
    fmt.Println(resp.Text())
}

输出:

{
  "args": {},
  "headers": {
    "Accept-Encoding": "gzip",
    "Host": "httpbin.org",
    "User-Agent": "direwolf - winter is coming"
  },
  "origin": "171.217.52.188, 171.217.52.188",
  "url": "https://httpbin.org/get"
}

除此之外,direwolf 可以很方便的给一个请求添加参数,例如 Headers、Cookies、Params。

import (
    "fmt"

    dw "github.com/wnanbei/direwolf"
)

func main() {
    headers := dw.NewHeaders(
        "User-Agent", "direwolf",
    )
    params := dw.NewParams(
        "name", "wnanbei",
        "age", "18",
    )
    cookies := dw.NewCookies(
        "sign", "kzhxciuvyqwekhiuxcyvnkjdhiue",
    )
    resp, err := dw.Get("https://httpbin.org/get", headers, params, cookies)
    if err != nil {
        return
    }
    fmt.Println(resp.Text())
}

输出:

{
    "args": {
        "age": "18",
        "name": "wnanbei"
    },
    "headers": {
        "Accept-Encoding": "gzip",
        "Cookie": "sign=kzhxciuvyqwekhiuxcyvnkjdhiue",
        "Host": "httpbin.org",
        "User-Agent": "direwolf"
    },
    "origin": "1.1.1.1, 1.1.1.1",
    "url": "https://httpbin.org/get?age=18&name=wnanbei"
}
4626 次点击
所在节点    Go 编程语言
23 条回复
locoz
2019-12-03 10:02:48 +08:00
我感觉我在 V2 上看到好几个仿 Python 上 requests 库的 Golang 库了
wnanbei
2019-12-03 10:12:39 +08:00
@locoz 可能都是觉得别人写的不够好,就自己写。实际上自己写出来的也没有好到哪里去,哈哈哈。
还有个原因估计是没有长期稳定有效的更新。
reus
2019-12-04 00:24:01 +08:00
@realpg 那百度违法吗?谷歌违法吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/624953

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX