• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

抽奖送书有“黑幕”?!揭晓“黑心”博主的抽奖“黑幕”!顺便评论区再抽一位送中秋礼物!

互联网 diligentman 1小时前 2次浏览

前情回顾

  • 🎉上周一发布了一篇博客,只要点赞、评论就能参与抽奖送书!
  • 🎉这次让我们来看看这位博主是怎么抽奖的吧
  • 🎉点赞 👍 收藏 ⭐留言 📝 即可参与抽奖送中秋礼盒🙉
  • 🎉文末可领取源码~✨

详情可以点击链接 《机器学习入门:基于数学原理的Python实战》

所以今天带大家来康康,博主是怎么抽奖哒~
康康有木有传说中的黑幕

目录

  • 前情回顾
  • 1. 如何获取评论名单?
  • 2. 如何抽奖?
  • 3. 开奖啦~
  • 4. 抽奖啦~
  • 最后

1. 如何获取评论名单?

按下F12查看列表,很快就能找到这些评论的链接了~
抽奖送书有“黑幕”?!揭晓“黑心”博主的抽奖“黑幕”!顺便评论区再抽一位送中秋礼物!

所以我们需要先获取这个列表的评论信息

  • 首先使用&http.Client{}创建一个客户端的请求
  • 然后再通过NewRequest进行发送POST请求
	client := &http.Client{}
	reqSpider, err := http.NewRequest("POST", "https://blog.csdn.net/phoenix/web/v1/comment/list/120067923?page="+p+"&size=10", nil)
	if err != nil {
		log.Fatal(err)
	}
	reqSpider.Header.Set("content-length", "0")  // 书写请求头
	reqSpider.Header.Set("accept", "*/*")
	reqSpider.Header.Set("x-requested-with", "XMLHttpRequest")
	respSpider, err := client.Do(reqSpider) // 发送请求
	if err != nil {
		log.Fatal(err)
	}
	defer respSpider.Body.Close()
	bodyText, err := ioutil.ReadAll(respSpider.Body)
	if err != nil {
		log.Fatal(err)
	}
  • 由于go语言json格式没有那么方便,所以我们必须自己使用进行反序列
  • 所以要自己写一个结构体,推荐一个StringToStruct的网址,百度就行了!
type Result struct {
	Code int64 `json:"code"`
	Data struct {
		Count      int64 `json:"count"`
		FloorCount int64 `json:"floorCount"`
		List       []struct {
			Info struct {
				ArticleID             int64  `json:"articleId"`
				Avatar                string `json:"avatar"`
				CommentFromTypeResult struct {
					Index int64  `json:"index"`
					Key   string `json:"key"`
					Title string `json:"title"`
				} `json:"commentFromTypeResult"`
				CommentID       int64         `json:"commentId"`
				CompanyBlog     interface{}   `json:"companyBlog"`
				CompanyBlogIcon interface{}   `json:"companyBlogIcon"`
				Content         string        `json:"content"`
				DateFormat      string        `json:"dateFormat"`
				Digg            int64         `json:"digg"`
				DiggArr         []interface{} `json:"diggArr"`
				Flag            interface{}   `json:"flag"`
				FlagIcon        interface{}   `json:"flagIcon"`
				LevelIcon       interface{}   `json:"levelIcon"`
				NickName        string        `json:"nickName"`
				ParentID        int64         `json:"parentId"`
				ParentNickName  interface{}   `json:"parentNickName"`
				ParentUserName  interface{}   `json:"parentUserName"`
				PostTime        string        `json:"postTime"`
				UserName        string        `json:"userName"`
				Vip             interface{}   `json:"vip"`
				VipIcon         interface{}   `json:"vipIcon"`
				Years           interface{}   `json:"years"`
			} `json:"info"`
			PointCommentID interface{}   `json:"pointCommentId"`
			Sub            []interface{} `json:"sub"`
		} `json:"list"`
		PageCount int64 `json:"pageCount"`
	} `json:"data"`
	Message string `json:"message"`
}

把这个复制到网址上就能生成结构体了
抽奖送书有“黑幕”?!揭晓“黑心”博主的抽奖“黑幕”!顺便评论区再抽一位送中秋礼物!
抽奖送书有“黑幕”?!揭晓“黑心”博主的抽奖“黑幕”!顺便评论区再抽一位送中秋礼物!

  • 然后对返回的数据进行序列化就行了。
  • 然后把所有评论的人放在一个列表当中。
var result Result
	_ = json.Unmarshal(bodyText, &result)               //byte to json
	num := len(result.Data.List)
	commentList := result.Data.List
	for i:=0 ;i<num; i++ {
		var luckPerson LuckyPerson
		luckPerson.UserName = commentList[i].Info.UserName
		luckPerson.NickName = commentList[i].Info.NickName
		tmp = append(tmp, luckPerson)   // 存放每一个评论的人
	}
  • 但是我们要进行一个去重的操作!
func removeRepByMap(slc []LuckyPerson) []LuckyPerson {  //去除重复的元素
	var result []LuckyPerson           //存放返回的不重复切片
	tempMap := map[LuckyPerson]byte{}  // 存放不重复主键
	for _, e := range slc {
		l := len(tempMap)
		tempMap[e] = 0 					//当e存在于tempMap中时,再次添加是添加不进去的,因为key不允许重复
		if len(tempMap) != l { 			// 加入map后,map长度变化,则元素不重复
			result = append(result, e)  //当元素不重复时,将元素添加到切片result中
		}
	}
	return result
}

到目前为止,我们就拿到全部的去重评论名单啦!
准备抽奖!

2. 如何抽奖?

采用随机种子进行随机选取

func lottery(totalPerson []LuckyPerson) LuckyPerson {  // 抽取中奖选手
	rand.Seed(time.Now().UnixNano())    // 使用随机种子
	index:=rand.Intn(len(totalPerson))  // 生成0到这个列表的长度的一个数字
	return totalPerson[index]  			// 返回中奖选手
}

3. 开奖啦~

让我们看看是谁获奖了啦~

由于一缩再缩,只能缩小到这种程度才能看见抽奖全程。
抽奖送书有“黑幕”?!揭晓“黑心”博主的抽奖“黑幕”!顺便评论区再抽一位送中秋礼物!
直接截图吧~
抽奖送书有“黑幕”?!揭晓“黑心”博主的抽奖“黑幕”!顺便评论区再抽一位送中秋礼物!抽奖送书有“黑幕”?!揭晓“黑心”博主的抽奖“黑幕”!顺便评论区再抽一位送中秋礼物!

4. 抽奖啦~

点赞评论即可参与抽奖获得一个可可爱爱的神秘中秋礼物哈~ ,
本周日晚上 (9月19号19:30进行抽奖哈)

还不能告诉你哈~ 秘密

抽奖送书有“黑幕”?!揭晓“黑心”博主的抽奖“黑幕”!顺便评论区再抽一位送中秋礼物!

最后

小生凡一,期待你的关注。

想要源代码可以到我扫描下方,然后回复CSDN抽奖~


喜欢 (0)