import requestsimport pymongoimport requestsimport os

class QqGroup:#三个接口url 获取 qq组号  获取每组成员信息  获取qq头像下载地址   group_url = "https://qun.qq.com/cgi-bin/qun_mgr/get_group_list"   member_url = "https://qun.qq.com/cgi-bin/qun_mgr/search_group_members"   pic_url = "http://q4.qlogo.cn/g?b=qq&nk={%s}&s=140"#一般将cookie与链接数据库代码写在构造函数   def __init__(self,cookie):      self.cookie = cookie      self.client = pymongo.MongoClient(host='118.24.3.40',port=27017)      self.db = self.client['qq_group'] #数据库名称      self.table = self.db['qq_group']   #表名称#获取 qq组号   def get_all_group(self):      data = {'bkn':2039193070}      res = requests.post(self.group_url,data,headers={'cookie':self.cookie}).json()#新方法 1、对于返回值为多个list合并,如果返回为空,增加默认值为空 2、对于字典取值用get方法      all_groups = res.get('join', []) + res.get('create', []) + res.get('manage', [])

      all_gc=[i.get('gc') for i in all_groups]

      return all_gc#获取每组成员信息    def get_group_info(self,num):      data = {"gc":num,"st":0,"end":200,"sort":0,"bkn":2039193070}      res = requests.post(url=self.member_url, data=data, headers={'Cookie':self.cookie})      mems = res.json().get("mems")        for i in mems:         mem = {            "qq": i.get("uin"),            "gender": i.get("g"),            "nick": i.get("nick"),            "card": i.get("card"),            "qage": i.get("qage")            }         if mem.get("gender") == 0:            mem['gender'] = "男"         elif mem.get("gender") == 1:            mem['gender'] = "女"         else:            mem['gender'] = "未知"         if mem.get("card") == "":            mem['card'] = "没有群名片"         self.save_mongo(mem)         self.down_pic(i.get("uin"))#存入mogodb数据库   def save_mongo(self,data):      self.table.insert(data)

#下载qq头像   def down_pic(self,qq_num):      real_url=self.pic_url %qq_num      res=requests.get(real_url).content      pathnew = os.path.dirname(os.path.abspath(__file__))      pathnew = os.path.join(pathnew, 'imgs')      if not os.path.isdir('imgs'):         os.makedirs('imgs')      with open(os.path.join(pathnew, str(qq_num) + '.jpg'), 'wb') as fw:         fw.write(res)         print('%s头像下载完成' % qq_num)#main函数用于将各过程统一到一个函数,便于实例化后调用   def mian(self):      all_group=self.get_all_group()      for i in all_group:         self.get_group_info(i)#实例化类 参数传递为cookieQ=QqGroup('pgv_pvid=1745803612; pgv_pvi=9485686784; RK=vRZxXdy1Y7; _qpsvr_localtk=0.8876927078641847; pgv_si=s3971407872; ptisp=cnc; ptcz=e42f943c39b23e3d7a94d9deac0de69388506bbb9b09000f197b8681624f70ac; uin=o0106148088; skey=@pH5b3tYaY; pt2gguin=o0106148088; p_uin=o0106148088; pt4_token=Vrwh5LwXxUAe0OaJi5DR-XEt8F13T5OheqfWVI3CJjQ_; p_skey=SPaNeBpdwjMfAGplMvT-msRMptEYPnPykjrJo80kXqY_')Q.mian()

转载于:https://www.cnblogs.com/wenchengqingfeng/p/9396291.html

python-爬虫:取qq号中各分组成员信息存入数据库,并将qq头像下载保存到文件夹,图片命名为qq号(实例3)...相关推荐

  1. Python爬取微博热搜榜,将数据存入数据库

    一直想学习用Python来进行数据的爬取,也一直想知道Python连接数据库的操作,今天刚好看到的这篇文章满足了这两个条件,我试着爬了下微博,并成功将数据添加到数据库中,颇为欢喜.作者写的很简单,有些 ...

  2. python使用pandas计算dataframe中每个分组的分位数极差、分组数据的分位数极差(range)、使用groupby函数和agg函数计算分组的两个分位数

    python使用pandas计算dataframe中每个分组的分位数极差.分组数据的分位数极差(range).使用groupby函数和agg函数计算分组的两个分位数 目录

  3. python使用pandas计算dataframe中每个分组的极差、分组数据的极差(range)、使用groupby函数和agg函数计算分组的最大值和最小值

    python使用pandas计算dataframe中每个分组的极差.分组数据的极差(range).使用groupby函数和agg函数计算分组的最大值和最小值 目录

  4. Python爬虫-面向对象-《传闻中的陈芊芊》豆瓣热评

    Python爬虫-面向对象-<传闻中的陈芊芊>豆瓣热评 其实需要注意的问题也并不是很多,现在大多数网站都建立了反爬机制,通过user-agent模仿用户进行服务器访问,如果无法访问,再添加 ...

  5. python爬取贝壳找房之北京二手房源信息

    所用库 requests xpath解析库 multiprocessing多进程 pandas库用于保存csv文件 实战背景 本文首发于:python爬取贝壳找房之北京二手房源信息 主要是为了做北京二 ...

  6. 用python爬取3dm上的单机游戏评测信息

    用python爬取3dm上的单机游戏评测信息 参考结果 #爬取3dm上单机游戏评测榜,50页的相关信息import requests from lxml import etree headers={& ...

  7. 【python学习】如何将所绘制的图(单张多张)保存到文件夹,并用绘制实时时间命名图片

    python图片保存到文件夹 基本存储(plt.savefig()) 创建文件夹并存储图片(if结构+OS模块) 批量绘制图片+批量存储(for循环) 图片/文件夹命名与所运行时间关联(datatim ...

  8. 【python学习】如何将所绘制的图(单张/多张)保存到文件夹,并用绘制实时时间命名图片

    python图片保存到文件夹 基本存储(plt.savefig()) 创建文件夹并存储图片(if结构+OS模块) 批量绘制图片+批量存储(for循环) 图片/文件夹命名与所运行时间关联(datatim ...

  9. MATLAB 实现读取数据文件,画图并自动将图片保存到文件夹中

    实现读取峰值数据,增加道数筛选符合要求的道数值,画出直方图并自动将图片保存到文件夹中,也可选择将直方图中点连线. %%读取峰值数据,增加道数筛选符合要求的道数值,画出直方图并自动将图片保存到文件夹中, ...

最新文章

  1. Java 生成滑动图片验证码, 阴影, 切块
  2. 网站建设前的准备工作你了解多少?
  3. 在eclipse中配置android ndk的自动编译环境builders
  4. Python模块(7)-SciPy 简易使用教程
  5. 【机器学习PAI实战】—— 玩转人工智能之美食推荐
  6. Microsoft Azure地缘组是什么
  7. java学习顺序_Java学习心得及学习顺序
  8. APU工业控制领域应用
  9. uni-app框架介绍
  10. 基于学术研究风云卫星数据下载教程
  11. itext pdf 基本使用实战
  12. 为虚拟机配置静态ip地址
  13. 设计模式学习(二)——创建型模式之“工厂模式“
  14. 手游联运平台:游戏详情页介绍
  15. android商品尺码界面,多终端产品 | 解析原型画布尺寸和界面尺寸
  16. CSS实现横向图片滚动播放
  17. 解决IE不能上网,火狐能上网 谷歌和IE浏览器都上不了网只能火狐上怎么办?
  18. Asp.Net常见问题及技术实现方案(一)
  19. Xilinx与Altera的FPGA区别
  20. 医用红外额温枪测温仪方案

热门文章

  1. 新房水电装修注意事项
  2. 基于51单片机的大气压检测系统
  3. Eclipse中对maven项目进行打包
  4. android利用小米推送保活自已应用,Android--利用第三方推送实现APP伪保活(小米篇)...
  5. 英语口语笔记B1-Unit01.购物时尚-01-Buying clothes
  6. 2022最新轻量级影视搜索播放器源码+已修复版
  7. 汽车点火开关的START、ON、ACC、LOCK描述
  8. html 水纹效果原理,canvas实现水波纹效果
  9. 超全!2020互联网大厂的薪资和职级一览
  10. 用科学实验玩“坏”二十四节气,中华传统还能这么学,科学、节气、民俗三重启蒙!...