Golang爬虫下载资源到本地
2021-12-24 19:37
1246 查看
通过Glang爬取猛男图片到本地保存;
package main import ( "fmt" "io" "net/http" "os" "regexp" "strconv" ) //http读取网页数据写入result返回 func HttpGet(url string) (result string, err error) { resp, err1 := http.Get(url) if err1 != nil { err = err1 return } defer resp.Body.Close() buf := make([]byte, 4096) for { n, err2 := resp.Body.Read(buf) if n == 0 { break } if err2 != nil && err2 != io.EOF { err = err2 return } result += string(buf[:n]) } return result, err } var path string = "D:/test/Gundam/" //保存图片到本地 func saveImg(index int, url string, page chan int) { //图片httpbody fmt.Println(index, "-----", url) //爬取的网站重复使用了这张图 if url == "http://images.17173.com/gd/images/ms/15019.gif" { return } resp, err := http.Get(url) if err != nil { fmt.Println("http get err:", err) return } defer resp.Body.Close() //打开文件流 picName := path + strconv.Itoa(index) + ".gif" f, errf := os.Create(picName) if errf != nil { fmt.Println("os create err:", errf) return } defer f.Close() buf := make([]byte, 4096) //读httpbody数据写入文件流 for { n, err2 := resp.Body.Read(buf) if n == 0 { break } if err2 != nil && err2 != io.EOF { err = err2 return } f.Write(buf[:n]) } page <- index } //爬取图片 func spiderPic(data string) { str := regexp.MustCompile("<A href=\"(.*?)\" target=_blank><IMG") alls := str.FindAllStringSubmatch(data, -1) page := make(chan int) for index, value := range alls { result, err := HttpGet(value[1]) if err != nil { fmt.Println("HttpGet err3:", err) return } regexpStr := regexp.MustCompile("src=\"(.*?)\" width=\"120\"") picData := regexpStr.FindAllStringSubmatch(result, -1) if len(picData) == 0 { regexpStr = regexp.MustCompile("src=\"(.*?)\" width=120") picData = regexpStr.FindAllStringSubmatch(result, -1) } go saveImg(index, picData[0][1], page) } //防止主go退出 count := len(alls) for i := 0; i < count; i++ { fmt.Printf("Download %d gif\n", <-page) } } func working() { url := "http://gd.17173.com/mechanics/index.shtml" result, err := HttpGet(url) if err != nil { fmt.Println("HttpGet err1:", err) return } spiderPic(result) } func main() { working() }
相关文章推荐
- 爬虫:将廖雪峰网上资源保存为本地PDF文件
- Python简单知乎爬虫--爬取页面的图片并下载到本地
- android下载问题。本地与网络资源大小不一致解决方法
- python爬虫-下载图片到本地目录
- 使用HTTP协议从网上获取资源下载到本地(1)
- Unity下载网络资源到本地,再从本地调用
- Python爬虫之爬取美女图片并下载到本地
- github 资源文件下载(python 爬虫)
- unity从服务器下载资源并且保存到本地
- Python编写一个简单的简单的爬虫-下载保存在本地
- Android 网络:使用URL访问网络资源,ImageView,下载到本地
- python --爬虫爬取学校官网新闻并下载到本地
- Python爬虫获取图片并下载保存至本地
- Python爬虫:多进程爬取网上图片并下载到本地,并将相关信息保存到mongodb数据库中
- python 网站爬虫 下载在线盗墓笔记小说到本地的脚本
- 自动从第三方下载资源到本地
- python爬虫实战-贴吧内容下载保存至本地
- Unity下载网络资源到本地,再从本地调用
- 使用requests和re正则表达式库爬虫小说‘斗破苍穹’,可选取任意章节下载到本地
- python采集jb51电子书资源并自动下载到本地实例教程