💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
### 快代理2 gocolly包github官网:https://github.com/gocolly/colly gocolly官网:http://go-colly.org/ 快代理:"https://www.kuaidaili.com/free 首先安装goclly这个包,老方法,去github复制它示例代理,然后去项目文件打开cmd,使用指令go get获取 示例代码: ``` package main import ( "fmt" "github.com/gocolly/colly" ) func main() { c := colly.NewCollector() // Find and visit all links c.OnHTML("a[href]", func(e *colly.HTMLElement) { e.Request.Visit(e.Attr("href")) }) c.OnRequest(func(r *colly.Request) { fmt.Println("Visiting", r.URL) }) c.Visit("http://go-colly.org/") } ``` 这次爬取多页 ![](https://img.kancloud.cn/01/76/0176c74690943736ebf89bbfa7270f49_1425x368.png) ``` package main import ( "fmt" "strconv" "time" "github.com/gocolly/colly" ) // 创建一个结构体 用于json数据的接收 type Datalist struct { Ip string `json:"ip"` // ip } // 创建一个结构体 用于json数据的接收 type Datalist2 struct { Port string `json:"port"` // port 端口 } // 创建一个结构体 用于json数据的接收 type Datalist3 struct { Anonymous string `json:"anonymous"` // 匿名度 } // 创建一个结构体 用于json数据的接收 type Datalist4 struct { Agreement string `json:"agreement"` //类型 } // 创建一个结构体 用于json数据的接收 type Datalist5 struct { Region string `json:"region"` //地区 } // 创建一个结构体 用于json数据的接收 type Datalist6 struct { Speed string `json:"speed"` //速度 } // 创建一个结构体 用于json数据的接收 type Datalist7 struct { Timeout string `json:"timeout"` //最后验证时间 } // 再创一个结构体 汇总一下 type Presult struct { Ips string `json:"ips"` // ip Ports string `json:"ports"` // port 端口 Anonymouss string `json:"anonymouss"` // 匿名度 Agreements string `json:"agreements"` //类型 Regions string `json:"regions"` //地区 Speeds string `json:"speeds"` //速度 Timeouts string `json:"timeouts"` //最后验证时间 } func Collection() { // 使用结构题传入 proxyList := []Datalist{} proxyList2 := []Datalist2{} proxyList3 := []Datalist3{} proxyList4 := []Datalist4{} proxyList5 := []Datalist5{} proxyList6 := []Datalist6{} proxyList7 := []Datalist7{} Prelist := []Presult{} //初始化 设置一个请求头 浏览器标识 c := colly.NewCollector( colly.UserAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36")) // 发出请求时附的回调 c.OnRequest(func(r *colly.Request) { // request头部设置 r.Headers.Set("Content-Type", "application/") }) // 请求打印状态码 c.OnResponse(func(r *colly.Response) { fmt.Println("响应状态:", r.StatusCode) }) // 对响应的html元素处理 c.OnHTML("title", func(e *colly.HTMLElement) { fmt.Println("title:", e.Text) }) // 对响应的html元素处理 c.OnHTML("table tbody", func(e *colly.HTMLElement) { // 爬取第一个 td标签的内容 e.ForEach("td:nth-of-type(1)", func(i int, element *colly.HTMLElement) { ip := element.Text proxyList = append(proxyList, Datalist{ Ip: ip, }) }) e.ForEach("td:nth-of-type(2)", func(i int, element *colly.HTMLElement) { port := element.Text proxyList2 = append(proxyList2, Datalist2{ Port: port, }) }) e.ForEach("td:nth-of-type(3)", func(i int, element *colly.HTMLElement) { anonymous := element.Text proxyList3 = append(proxyList3, Datalist3{ Anonymous: anonymous, }) }) e.ForEach("td:nth-of-type(4)", func(i int, element *colly.HTMLElement) { agreement := element.Text proxyList4 = append(proxyList4, Datalist4{ Agreement: agreement, }) }) e.ForEach("td:nth-of-type(5)", func(i int, element *colly.HTMLElement) { region := element.Text proxyList5 = append(proxyList5, Datalist5{ Region: region, }) }) e.ForEach("td:nth-of-type(6)", func(i int, element *colly.HTMLElement) { speed := element.Text proxyList6 = append(proxyList6, Datalist6{ Speed: speed, }) }) e.ForEach("td:nth-of-type(7)", func(i int, element *colly.HTMLElement) { timeout := element.Text proxyList7 = append(proxyList7, Datalist7{ Timeout: timeout, }) }) for i, _ := range proxyList { Prelist = append(Prelist, Presult{ Ips: proxyList[i].Ip, //ip Ports: proxyList2[i].Port, // port 端口 Anonymouss: proxyList3[i].Anonymous, // 匿名度 Agreements: proxyList4[i].Agreement, //类型 Regions: proxyList5[i].Region, //地区 Speeds: proxyList6[i].Speed, //速度 Timeouts: proxyList7[i].Timeout, //最后验证时间 }) } fmt.Println(Prelist) }) // 请求出错时 c.OnError(func(r *colly.Response, e error) { fmt.Println(e.Error()) }) // 设置线程数 c.Limit(&colly.LimitRule{ Parallelism: 2, }) // 爬取前3页 每页停留5秒 for i := 1; i <= 3; i++ { c.Visit("https://www.kuaidaili.com/free/inha/" + strconv.Itoa(i) + "/") time.Sleep(time.Second * 5) } } func main() { Collection() } ```