golang 获取网页数据 数组循环
以下是使用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官网的网页数据,并查找所有链接并存储到一个数组中,最后循环打印所有链接
原文地址: https://www.cveoy.top/t/topic/eq0S 著作权归作者所有。请勿转载和采集!