吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2056|回复: 5
收起左侧

[其他原创] 分享一波Golang并发爬取头像的代码

[复制链接]
15035252367 发表于 2021-6-1 19:40
本帖最后由 15035252367 于 2021-6-1 19:42 编辑

前段时间 公司做活动 要求生成一些头像 但是我太懒了(主要是不会)
我就爬了一些

源码地址  https://gitee.com/code5/go-test/blob/爬虫/图片爬虫/爬图片.go

贴一下代码吧  互相学习

    package main

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

    var (

    //图片正则
    reImage = `"((http://)(.*?)(\.jpg))"`

    //大标题列表 图片
    //class="nr"
    reTitlediv = `<ul[\s\S]class=PicList>[.*\s\S]+<div[\s\S]class="showpage">`
    reTitleurl = `"(https?://)(.*?)(\.((jpg)|(gif)|(bmp)|(jpeg)))"`
    reTitleList = `href="(/touxiang/\d+\.htm)"><`

    //内容页面
    reContentdiv = `<div[\s\S]class="wznr">[.*\s\S]+<div[\s\S]class="wzsx">`

    //图片名字
    imageTitle = `/([A-Z]{2}\d{2,4}_\d{1,3}\.jpg)`
    )
    var wg sync.WaitGroup

    //获取页面数据
    func getUrl(url string) string {
    resp, err := http.Get(url)
    Handerr(err, "http.Get(youxiang)")
    defer resp.Body.Close()

    bodyByte, err := ioutil.ReadAll(resp.Body)
    Handerr(err, "ioutil.ReadAll(resp.Body)")
    bodyStr := string(bodyByte)
    return bodyStr
    }

    //正则分析页面数据
    func FXdata(htmlStr, reStr string) [][]string {
    re := regexp.MustCompile(reStr)
    list := re.FindAllStringSubmatch(htmlStr, -1)
    return list
    }

    //保存图片
    func savepic(url string) {
    defer wg.Add(-1)
    imageNameStr := FXdata(url, imageTitle)
    //fmt.Println(imageNameStr)
    //return
    imageName := imageNameStr[0][1]
    fmt.Println(imageName, "正在下载")
    resp, err := http.Get(url)
    defer resp.Body.Close()
    if err != nil {
    fmt.Println(err)
    }
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
    fmt.Println(err)
    }
    err = ioutil.WriteFile(imageName, body, 0777)
    fmt.Println(err)

    }

    //1.0 解析首页
    func shouye(url string) {
    //fmt.Println(url)
    body := getUrl(url)
    //fmt.Println(body)

    //解析区块内容
    list := FXdata(body, reTitlediv)
    //fmt.Println(list[0][0])
    //当前区块 跳转链接
    htmlList := FXdata(list[0][0], reTitleList)
    fmt.Println(htmlList)

    for _, val := range htmlList {
    neirong("http://www.2qqtouxiang.com" + val[1])
    }

    }

    //2.0 内容
    func neirong(imgUrl string) {

    body := getUrl(imgUrl)

    //解析区块内容
    list := FXdata(body, reContentdiv)

    //获取图片地址
    imgList := FXdata(list[0][0], reImage)

    fmt.Println("页面:"+imgUrl+"数据个数:", len(imgList))
    for _, val := range imgList {
    wg.Add(1)
    go savepic(val[1])
    }
    }

    func main() {
    for i := 77; i >= 50; i-- {
    idstr := fmt.Sprintf("%d", i)
    imgUrl := "http://www.2qqtouxiang.com/touxiang/list" + idstr + ".htm"
    fmt.Println(imgUrl)
    shouye(imgUrl)
    }

    wg.Wait()

    }

    func Handerr(err error, msg string) {
    if err != nil {
    fmt.Println(msg, err)
    }
    }

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
卡戎 + 1 谢谢@Thanks!
RS水果 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
First丶云心 发表于 2021-6-1 19:46
提示: 作者被禁止或删除 内容自动屏蔽
hate 发表于 2021-6-1 20:13
hahaxi 发表于 2021-6-2 10:32
有一个像素风的生成头像库
https://github.com/o1egl/govatar
 楼主| 15035252367 发表于 2021-6-2 21:00
hahaxi 发表于 2021-6-2 10:32
有一个像素风的生成头像库
https://github.com/o1egl/govatar

这个当时有查到的  不合适
 楼主| 15035252367 发表于 2021-6-2 21:01

当时正练习正则了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 15:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表