GO colly爬取图片
时间: 2024-01-25 21:03:23 浏览: 77
爬虫爬取图片
GO语言中的colly框架可以用于爬取图片。下面是一个使用colly框架爬取图片的示例代码:
```go
package main
import (
"fmt"
"log"
"net/http"
"os"
"strings"
"github.com/gocolly/colly"
)
func main() {
c := colly.NewCollector()
// 设置要爬取的网站
c.AllowedDomains = []string{"example.com"}
// 在请求之前执行的操作
c.OnRequest(func(r *colly.Request) {
fmt.Println("Visiting", r.URL.String())
})
// 在响应中查找图片链接
c.OnHTML("img[src]", func(e *colly.HTMLElement) {
imgURL := e.Attr("src")
if strings.HasPrefix(imgURL, "http") {
// 下载图片
err := DownloadImage(imgURL)
if err != nil {
log.Println("Failed to download image:", err)
}
}
})
// 开始爬取
err := c.Visit("http://example.com")
if err != nil {
log.Println("Failed to visit website:", err)
}
}
// 下载图片
func DownloadImage(url string) error {
response, err := http.Get(url)
if err != nil {
return err
}
defer response.Body.Close()
fileName := GetFileName(url)
file, err := os.Create(fileName)
if err != nil {
return err
}
defer file.Close()
_, err = io.Copy(file, response.Body)
if err != nil {
return err
}
fmt.Println("Downloaded", fileName)
return nil
}
// 获取文件名
func GetFileName(url string) string {
parts := strings.Split(url, "/")
return parts[len(parts)-1]
}
```
上述代码使用colly框架创建了一个爬虫,它会访问指定的网站,并在响应中查找图片链接。如果找到了以"http"开头的图片链接,就会下载该图片并保存到本地。
请注意,上述代码中的`"example.com"`应该替换为你要爬取图片的网站域名。
阅读全文