以下是使用golang获取网页数据并进行数组循环的示例代码:

package main

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

func main() {
	// 发送http请求获取网页数据
	resp, err := http.Get("https://golang.org")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer resp.Body.Close()

	// 读取网页数据
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	// 将网页数据转换为字符串
	html := string(body)

	// 定义一个数组,存储网页中的所有链接
	var links []string

	// 循环查找所有链接
	for {
		// 查找第一个链接的起始位置
		hrefIndex := findHrefIndex(html)
		if hrefIndex == -1 {
			break
		}

		// 截取第一个链接的起始位置到结束位置
		link := html[hrefIndex:getEndIndex(html, hrefIndex)]

		// 截取链接中的URL
		url := extractURL(link)

		// 将URL存储到数组中
		links = append(links, url)

		// 从html中删除已经找到的链接
		html = html[getEndIndex(html, hrefIndex):]
	}

	// 循环打印所有链接
	for _, link := range links {
		fmt.Println(link)
	}
}

// 查找href属性的起始位置
func findHrefIndex(html string) int {
	index := -1
	for i := 0; i < len(html)-6; i++ {
		if html[i:i+6] == "href=\"" {
			index = i + 6
			break
		}
	}
	return index
}

// 查找链接的结束位置
func getEndIndex(html string, startIndex int) int {
	endIndex := startIndex
	for i := startIndex; i < len(html); i++ {
		if html[i] == '"' {
			endIndex = i
			break
		}
	}
	return endIndex
}

// 提取链接中的URL
func extractURL(link string) string {
	index := -1
	for i := 0; i < len(link)-7; i++ {
		if link[i:i+7] == "http://" || link[i:i+8] == "https://" {
			index = i
			break
		}
	}
	if index == -1 {
		return ""
	}
	endIndex := index
	for i := index; i < len(link); i++ {
		if link[i] == '"' {
			endIndex = i
			break
		}
	}
	return link[index:endIndex]
}

该示例代码会发送http请求获取golang官网的网页数据,并查找所有链接并存储到一个数组中,最后循环打印所有链接

golang 获取网页数据 数组循环

原文地址: https://www.cveoy.top/t/topic/eq0S 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录