Golang Go语言中有没有不使用框架的爬虫例子?

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

Golang Go语言中有没有不使用框架的爬虫例子?

搜了一圈,基本都是用 colly 这样的框架写的爬虫,有没有不用框架写的爬虫 example?

最好有以下功能: 基本的频率控制, 基本的调度控制, seesion 的维护, xpath 的使用, 主流的 http 客户端的使用(不要像 java,python 那样多个 http 客户端 api,然后专门挑了个难用的出来)。

当然,功能不全也没关系,我可以自己加上。

14 回复

自己造一个

更多关于Golang Go语言中有没有不使用框架的爬虫例子?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


在造了,不过先参考一下现成的

你去写一个,发现写完不就是另一个 colly 框架么?爬虫不就是那点东西,咋写都一样

代码量不一样呀,example 200 行代码,一个文件就搞定,我改也容易改呀

200 行哪能实现你说的那些功能。。。开玩笑

之前完全从 0 写过一个,除了没有用 xpath 而是用的 css 选择器外 lz 写的都实现了。看了下代码行数

-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Go 471 19567 15804 158022
Assembly 47 563 763 4605
Markdown 29 855 0 2411
Bourne Shell 8 108 349 676
YAML 13 45 18 455
XML 6 0 0 280
TOML 4 32 4 102
make 3 31 2 83
C 2 14 30 44
Dockerfile 1 1 0 10
JSON 1 0 0 8
-------------------------------------------------------------------------------
SUM: 585 21216 16970 166696
-------------------------------------------------------------------------------

抱歉发出来感觉不对看了下默认把 vendor 算进去了,排除掉是

-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Go 47 641 244 2461
XML 6 0 0 280
Markdown 1 82 0 133
Bourne Shell 2 19 0 60
-------------------------------------------------------------------------------
SUM: 56 742 244 2934
-------------------------------------------------------------------------------

我一直都是自己写的,用的是 fasthttp 还有解析库,遇到动态绑定的就使用 selenium 实现。

你是实现了啥牛逼反爬功能?这代码量感觉跟基本的业务爬虫的量差好多

最近在不同的地方用不同的,现在做的相对久一点的还是 chromedp,此外还有一个 chromedp 的改良版 rod,但是有些封装没有你说的这么全,不知道是不是都是直接拿 net 包搞的干活,只能自己造了,手动狗头

在Golang(Go语言)中,确实存在不使用框架的爬虫例子。以下是一个简单的Go语言爬虫示例,用于说明如何从头开始编写一个基本的爬虫程序:

首先,你需要明确爬虫的基本工作流程:明确URL、发送请求获取响应数据、保存并提取有用信息、处理数据。

以下是一个简单的Go语言爬虫代码示例:

package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
)

func HttpGet(url string) (string, error) {
	resp, err := http.Get(url)
	if err != nil {
		return "", err
	}
	defer resp.Body.Close()
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		return "", err
	}
	return string(body), nil
}

func main() {
	url := "http://example.com" // 替换为你要爬取的URL
	content, err := HttpGet(url)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	fmt.Println(content)
}

这个简单的爬虫程序定义了一个HttpGet函数,用于发送HTTP GET请求并返回响应内容。在main函数中,程序会调用HttpGet函数爬取指定URL的内容,并打印出来。

请注意,这只是一个非常基础的爬虫示例。在实际应用中,你可能需要处理更多的细节,如错误处理、并发请求、数据解析和存储等。此外,遵守网站的robots.txt规则和法律法规也是非常重要的。

回到顶部