微信获取openid过滤黑名单_写入文件_多协程版5500条10几秒
2016-03-17 11:39
453 查看
package main import ( "encoding/json" "github.com/bitly/go-simplejson" "io/ioutil" "log" "net/http" "os" ) func main() { //获取access_token appid, secret := "XXXXXXXXX", "XXXXXXXXXX" r := getFile("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret) var dat map[string]string json.Unmarshal([]byte(r), &dat) //获取全部openid并写入文件 openids := getFile("https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + dat["access_token"]) //过滤黑名单openid uopenids, _ := simplejson.NewJson(openids) s, _ := uopenids.Get("data").Get("openid").StringArray() var inputString string c := make(chan string, len(s)) log.Println("请勿关闭,程序正在运行中…………", len(s)) for _, v := range s { go func(v string) { s1 := getFile("https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + dat["access_token"] + "&openid=" + v) up, _ := simplejson.NewJson(s1) groupid, _ := up.Get("groupid").Int() if groupid != 4 { c <- v + "\n" } }(v) } for i := 0; i < len(s); i++ { inputString += <-c } //写入文件 defer openFiles("2015September5.txt", inputString) } func openFiles(name string, con string) { f, _ := os.OpenFile(name, os.O_APPEND|os.O_CREATE, 0666) f.WriteString(con) defer f.Close() } func getFile(url string) []byte { oid, _ := http.Get(url) defer oid.Body.Close() oids, _ := ioutil.ReadAll(oid.Body) return oids }
程序说明:拉取微信服务号的关注用户(所有),同时一一检测用户,过滤黑名单里的用户(这里最耗时,用多协程简单搞定提速N部),保存到2015September5.txt
这个版本是上个版的多线程版,上个版本没用到多协程,运行时间太慢要十几二十分钟
现在这个版本因为加了多协程goroutine运行时间只要十几秒,跟上一个版本简直天差地别
技术难度适合初级同学研究研,高手可以绕道,有兴趣的同学可以举一反三,扩展扩展
——
相关文章推荐
- Android微信支付遇到的坑
- 友盟集成微信分享,显示您的设备没有安装微信问题及解决办法
- 多种方式实现底部菜单栏(仿微信界面)
- hehe之小程序
- 关于微信报错media data missing的解决方案
- Android微信SDK API 调用教程
- 微信开发平台网址
- C# 关于微信支付 body不是UTF-8编码的问题
- 微信 自定义菜单 菜单响应 代码
- OpenResty获取微信公众号access_token
- Openresty实现微信公众号的自定义菜单
- 微信分享调用 -- c#篇
- ngrok-本地内网端口映射到外网(简单!有效!)
- 微信和qq默认表情代码对照表及表情文件下载
- PHP实现微信公众账号开发
- 微赞微信公众号现金红包错误排查
- 企业微信入局,移动办公又演化成BAT大战?
- Android封装类似微信的顶部TitleBar弹出的PopupWindow代码
- Android仿微信小视频录制功能(二)
- 微信分享|如何在云中构建大规模分布式系统