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 插入成功