怎么用go程序下载网页中的所有图片
可以使用以下步骤来用go程序下载网页中的所有图片:
-
使用go的http包发送HTTP请求,获取网页内容。
-
使用正则表达式或者HTML解析器解析网页内容,提取出所有图片的URL。
-
遍历所有图片的URL,使用go的http包发送HTTP请求,下载图片并保存到本地。
以下是一个简单的示例代码:
package main
import (
"fmt"
"io"
"net/http"
"os"
"regexp"
)
func main() {
// 发送HTTP请求,获取网页内容
resp, err := http.Get("http://example.com")
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
// 读取网页内容
body, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error:", err)
return
}
// 使用正则表达式提取所有图片的URL
re := regexp.MustCompile(`<img.*?src="(.*?)".*?>`)
matches := re.FindAllStringSubmatch(string(body), -1)
// 遍历所有图片的URL,下载图片并保存到本地
for _, match := range matches {
imageUrl := match[1]
resp, err := http.Get(imageUrl)
if err != nil {
fmt.Println("Error:", err)
continue
}
defer resp.Body.Close()
file, err := os.Create(imageUrl)
if err != nil {
fmt.Println("Error:", err)
continue
}
defer file.Close()
io.Copy(file, resp.Body)
fmt.Println("Downloaded", imageUrl)
}
}
注意,这个示例代码只是一个简单的示例,实际应用中还需要考虑更多的错误处理、URL去重、并发下载等问题。
原文地址: https://www.cveoy.top/t/topic/bS3z 著作权归作者所有。请勿转载和采集!