75142913在线留言
30行GO语言代码实现定时抓取指定URL_Go语言_网络人

30行GO语言代码实现定时抓取指定URL

Kwok 发表于:2022-01-26 23:26:46 点击:37 评论: 0

最近有一个定时抓取指定任务的需求需要实现,发现使用GO语言来写,只需要不到30行代码就能满足我的需求。

一、利用GO语言使用定时任务

全部代码如下:

package main
import (
	"fmt"
	"io/ioutil"
	"net/http"
	"os"
	"time"
)
func main() {
	pretime := time.Second * 103         //设置执行的时间间隔
	timeTickerChan := time.Tick(pretime) // 创建一个计时器
	i := 1                               //当前执行次数
	url := "http://www.55mx.com/"      //抓取的URL
	for {
		fmt.Println(time.Now().Format("2006-01-02 15:04:05"), ":正在执行第", i, "次任务")
		res, err := http.Get(url) // 发送网络请求
		if err != nil {
			fmt.Fprintf(os.Stderr, "发送抓取请求出错了: %vn", err)
		}
		body, err := ioutil.ReadAll(res.Body) // 读取资源数据
		res.Body.Close()                      // 关闭资源
		if err != nil {
			fmt.Fprintf(os.Stderr, "抓取出错: %s: %vn", url, err)
		}
		fmt.Println(string(body), pretime, "后将再次执行~")
		i++
		<-timeTickerChan
	}
}

二、编译方式

我在MacOS下写的,使用下面的2种方式分别编译成了Linux与Windows可执行程序。

1、Linux 编译方式:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build ./main.go 

然后上传到相关目录后,需要设置权限:

chmod 777 ./main

这里的main是默认编译后的名称,你可以手动改名。然后使用下面的代码运行:

./main #直接前台运行
nohup ./main & #在后台运行

如果你的程序在后台运行的情况下,可以使用jobs -l 或者ps -aux | grep "autopost" 查看到后台程序运行情况,要结束使用kill PID即可。

2、Windows 编译方式:

CGO_ENABLED=0 GOOS=windows  go build ./main.go

会生成一个main.exe文件,双击即可运行。

如果你需要在Windows下编译成后台运行的方式,请使用下面的编译命令:

go build -ldflags "-H=windowsgui" main.go
除非注明,网络人的文章均为原创,转载请以链接形式标明本文地址:https://www.55mx.com/post/190
标签:定时任务Kwok最后编辑于:2022-01-26 23:26:12
0
感谢打赏!

《30行GO语言代码实现定时抓取指定URL》的网友评论(0)

本站推荐阅读

热门点击文章