Golang Go语言中的基于HTTP客户端的爬虫工具direwolf

发布于 1周前 作者 wuwangju 来自 Go语言

Golang Go语言中的基于HTTP客户端的爬虫工具direwolf

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

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

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

特性:

  • 简单方便的 API 接口
  • 非常方便的设置 Headers,Cookies,URL 参数,Post 表单 等请求选项
  • 可以设置到单个请求的超时、代理、重定向控制
  • Cookie 的自动管理与存储
  • 内置连接池,复用 TCP 连接
  • 支持用正则或 CSS 选择器提取响应数据
  • 响应编码控制

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

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

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"
}

更多关于Golang Go语言中的基于HTTP客户端的爬虫工具direwolf的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

24 回复

感觉 go 的轮子还挺多…

更多关于Golang Go语言中的基于HTTP客户端的爬虫工具direwolf的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


觉得它好用,愿意造轮子的就多了

就是觉得这个东西很…我才自己写的

V 站 天天又是版权又是 TOS 的

为啥搞起来违法的爬虫一个比一个精神

朋友,先去看看爬虫的定义,然后再去看看法律,再回来说什么是违法的

#6
我就告诉你一件事
你写的东西当然不违法
但是实际用起来 99.99999%都是违反人家 TOS 的

夸张了,爬虫本质上只是网络请求,能做的事情很多,不能因为其被一部分人用于违法的,就把爬虫整个定义为违法的。

算了,兄 die,在 v 站里 爬虫 == 违法 == 坐牢. 我就纳闷为啥大厂都在明目张胆的招

加油,保持更新。

算了,也不辨这些,跟我也没关系。本来只是提一句可以用来写爬虫的。
我写的是 HTTP 客户端,用来发请求的,跟 python 的 requests 差不多,爱拿来干啥干啥。

谢谢,会保持更新的

参考的对象应该都是 python 的 requests

这么多 http client,改选哪一个?

你可以爬可以自己偷偷摸摸用,但是你不能分享不能用这个数据去卖钱。就这么简单。。。

我只是好奇猪场招爬虫是干什么的,坐标广州

你问我的话,那我肯定说选 direwolf 呀,哈哈哈

其实蛮多地方都会零零碎碎的需要爬虫的吧

#7 任何东西都要讲量的,与使劲调开放平台的 API 一样可以达到 DDOS 的效果同理。
#9 大厂招爬虫是因为需要,数据分析相关的业务只要涉及外部公开数据就会需要爬虫,毕竟别人的数据可不会随便拿出来卖。

我感觉我在 V2 上看到好几个仿 Python 上 requests 库的 Golang 库了

可能都是觉得别人写的不够好,就自己写。实际上自己写出来的也没有好到哪里去,哈哈哈。
还有个原因估计是没有长期稳定有效的更新。

那百度违法吗?谷歌违法吗?

针对帖子中提到的“Golang Go语言中的基于HTTP客户端的爬虫工具direwolf”,以下是我的专业回复:

Direwolf是一个使用Golang编写的HTTP客户端工具,它在爬虫开发领域具有一定的应用价值。以下是对Direwolf的简要介绍:

一、功能特性

  1. Direwolf提供了清洁便捷的API,使得设置请求头、Cookie、参数、表单等操作变得简单。
  2. 支持会话控制、连接池、HTTP(S)代理、重定向控制、超时控制等高级功能。
  3. 可以从响应主体中使用css选择器、regexp、json等方式提取结果。

二、应用场景

Direwolf非常适合用于构建基于Go语言的网络爬虫。通过利用其强大的HTTP客户端功能和灵活的解析能力,开发者可以高效地抓取网页数据、解析HTML文档,并提取所需信息。

三、使用建议

  1. 在使用Direwolf进行爬虫开发时,建议熟悉其API文档和示例代码,以便更好地利用其功能。
  2. 注意遵守目标网站的robots.txt协议和法律法规,避免过度爬取和滥用资源。
  3. 对于复杂的爬虫任务,可能需要结合其他工具和库来共同实现。

总之,Direwolf是一个功能强大的HTTP客户端工具,在Go语言爬虫开发领域具有一定的应用价值。

回到顶部