【day8复习homework】:所有qq群下载,存mongodb,并下载qq图像

pyton基础知识__day8复习

上周回顾:
1、网络编程
发http请求
# urllib2
#python3
urllib
from urllib.request import urlopen
urlopen(url) #get
res = urlopen(url,data) #post,其中data需要传二进制数据
res.read().decode() # read获取二进制数据,decode再解析成字符串
requests
import json
res = requests.get(url,params={},headers={},cookies={},files={})
res = requests.post(url,data={},headers={},cookies={},files={})
all_data = res.text #获取字符串
#json.loads(all_data) # 把json串(字符串)转成字典。loads参数是字符串
#res.json()
res.content #二进制的数据
open('a.mp3','wb').write(res.conent)
res.status_code #http的状态码



2、面向对象
类 #(汽车模型就相当于类)
对象、实例 #根据模型造出来的实际的东西(小汽车),就叫实例
实例化 #造车的过程
self 本类对象
类变量


3、异常处理
try:
xxxx
xxxxx
except Exception as e :
pass
else:
没有出错
finally:
不管你有没有出异常都会执行它

2. :所有qq群下载,存mongodb,并下载qq图像
 1 1、获取到自己qq里面所有的群,并且保存每个群里面的群成员信息到mongodb里面
 2     下载每个群的群成员的头像
 3         1、抓包,抓到获取自己所有qq群的接口
 4             requests
 5             https://qun.qq.com/cgi-bin/qun_mgr/get_group_list
 6             bkn: 1593515200
 7             pgv_pvi=8089298944; pt2gguin=o0511402865; RK=ZRYhgjpEaS; ptcz=5d87f63746f9bfa12e693a0eec69668e3235ae2898e597f0bac31ea356a524b5; pgv_pvid=3763339748; ptui_loginuin=511402865; _qpsvr_localtk=0.97883087563524; ptisp=cnc; pgv_si=s390247424; uin=o0511402865; skey=@ef5yHUIrj; p_uin=o0511402865; pt4_token=6SVTCPxvY3DQhpo3mb6H7-Yld6WOxE1dIx06mAanAD0_; p_skey=7xqvriaskA6cub2O-*KmA8WOlFzS2aMtFipnW-suJUU_
 8         2、拿到所有的群号,然后调用获取群信息的接口
 9         https://qun.qq.com/cgi-bin/qun_mgr/search_group_members
10             gc: 728755825
11             st: 0
12             end: 20
13             sort: 0
14             bkn: 1593515200
15         3、先把信息存到mongodb里面
16 
17         4、根据每个人的qq号,下载它的头像,保存到本地一个文件夹
18             http://q4.qlogo.cn/g?b=qq&nk=511402865&s=140
19     用类来写
 1 import os
 2 
 3 import requests,pymongo
 4 
 5 class QqGroup:
 6     group_url = 'https://qun.qq.com/cgi-bin/qun_mgr/get_group_list'
 7     serach_url = 'https://qun.qq.com/cgi-bin/qun_mgr/search_group_members'
 8     img_url = 'http://q4.qlogo.cn/g?b=qq&nk=%s&s=140'
 9     def __init__(self,cookie):
10         self.cookie = cookie
11         self.client = pymongo.MongoClient(host='118.24.3.40',port=27017)
12         self.db = self.client['qq_group'] #数据库
13         self.table = self.db['qq_group']
14     def get_all_group(self):
15         data = {'bkn':1593515200}
16         res = requests.post(self.group_url,data,headers={'cookie':self.cookie}).json()#发请求
17         all_groups = res.get('join',[])+res.get('create',[])+res.get('manage',[])
18         all_gc = [ i.get('gc') for i in all_groups]
19         print(all_gc)
20         return all_gc
21     def get_mem_info(self,qq_num):
22         data = {"gc": qq_num, "st": 0, "end": 5000, "sort": 0, "bkn": 1593515200}
23         res = requests.post(self.serach_url, data, headers={'cookie': self.cookie}).json()  # 发请求
24         mems = res.get("mems")  # 获取到所有群成员的信息
25         for i in mems:
26             mem = {
27                 "qq": i.get("uin"),
28                 "gender": i.get("g"),
29                 "nick": i.get("nick"),
30                 "card": i.get("card"),
31                 "qage": i.get("qage")
32             }
33             if mem.get("gender") == 0:
34                 mem['gender'] = ""
35             elif mem.get("gender") == 1:
36                 mem['gender'] = ""
37             else:
38                 mem['gender'] = "未知"
39             if mem.get("card") == "":
40                 mem['card'] = "没有群名片"
41             self.save_mongo(mem)#存到mongo里面
42             self.down_qq_pic(i.get("uin"))#调用下载qq头像的函数
43     def save_mongo(self,data):
44         self.table.insert(data)
45         print('插入成功')
46     def down_qq_pic(self,qq_num):
47         real_url = self.img_url % qq_num
48         res = requests.get(real_url).content
49         if not os.path.isdir('imgs'):
50             os.mkdir('imgs')
51         with open(os.path.join('imgs',str(qq_num)+'.jpg'),'wb') as fw:
52             fw.write(res)
53             print('%s头像下载完成'%qq_num)
54 
55     def main(self):
56         print('程序开始运行了')
57         all_group = self.get_all_group()
58         for group in all_group:
59             self.get_mem_info(group)
60 
61 q = QqGroup('pgv_pvi=8089298944; pt2gguin=o0511402865; RK=ZRYhgjpEaS; ptcz=5d87f63746f9bfa12e693a0eec69668e3235ae2898e597f0bac31ea356a524b5; pgv_pvid=3763339748; ptui_loginuin=511402865; _qpsvr_localtk=0.97883087563524; ptisp=cnc; pgv_si=s390247424; uin=o0511402865; skey=@ef5yHUIrj; p_uin=o0511402865; pt4_token=6SVTCPxvY3DQhpo3mb6H7-Yld6WOxE1dIx06mAanAD0_; p_skey=7xqvriaskA6cub2O-*KmA8WOlFzS2aMtFipnW-suJUU_')
62 q.main()
 1 G:\install_disk\python\python.exe G:/python-DownLoad/练习code/day9/day8--牛牛.py
 2 程序开始运行了
 3 [5945472, 47908290, 49021972, 135758486, 637986749, 728755825]
 4 
 5 插入成功
 6 283769133头像下载完成
 7 插入成功
 8 274635853头像下载完成
 9 插入成功
10 380640917头像下载完成
11 插入成功
12 419940980头像下载完成
13 插入成功
View Result

 

 

转载于:https://www.cnblogs.com/xhybk/p/9401732.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值