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

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; [email protected]; pt2gguin=o0106148088; p_uin=o0106148088; pt4_token=Vrwh5LwXxUAe0OaJi5DR-XEt8F13T5OheqfWVI3CJjQ_; p_skey=SPaNeBpdwjMfAGplMvT-msRMptEYPnPykjrJo80kXqY_‘)Q.mian()

原文地址:https://www.cnblogs.com/wenchengqingfeng/p/9396291.html

时间: 2024-10-28 22:29:33

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

Python爬取贴吧中的图片

#看到贴吧大佬在发图,准备盗一下 #只是爬取一个帖子中的图片 1.先新建一个scrapy项目 scrapy startproject TuBaEx 2.新建一个爬虫 scrapy genspider tubaex https://tieba.baidu.com/p/4092816277 3.先写下items #保存图片的url img_url=scrapy.Field() 4.开始写爬虫 # -*- coding: utf-8 -*-import scrapyfrom TuBaEx.items

Python抓取手机APP中内容

首先下载Wireshark和模拟器(天天模拟器,夜神模拟器),天天模拟器在自带的应用商店里面能够登录微信. 然后打开Wireshark选择一个网卡开始抓包. 开始抓包后,在模拟器中要抓取的APP中对想要的资源进行点击访问,操作完成后停止捕捉,排除干扰. Filter用于过滤数据,在里面输入选择的过滤条件.相关的语法和设置可以在网上查找资料,这里干扰项较少,直接选出http协议的数据包. 点击所需要的数据进行分析,可以将里面的字段复制出来构造Header然后对资源进行访问. 1 # coding:

Python抓取单个网页中所有的PDF文档

Github博文地址,此处更新可能不是很及时. 1.背景 最近发现算法以及数据结构落下了不少(其实还是大学没怎么好好学,囧rz),考虑到最近的项目结构越来越复杂了,用它来练练思路,就打算复习下数据结构与算法.结合最近在学英语,然后干脆就用英文喽.然后选定一本参考书籍<Data Structures and Algorithms in Java>.刚开始看还是蛮吃力的,慢慢来.由于之前有翻录书籍附录的习惯,于是就去书籍附带的官网看了下,发现http://ww0.java4.datastructu

1-1 用Python抓取豆瓣及IMDB上的电影信息

下面的代码可以抓取豆瓣及IMDB上的电影信息,由于每段代码使用的数据源自上一段代码输出的数据,所以需要按顺序执行. step1_getDoubanMovies.py 1 # -*- coding: utf-8 -*- 2 ''' 3 该脚本得到豆瓣上所有电影的如下信息: 4 "rate": "7.5", 5 "cover_x": 2000, 6 "is_beetle_subject": false, 7 "title

Python爬虫入门——利用bs4库对HTML页面信息进行遍历读取

内容整理自中国大学MOOC——北京理工大学-蒿天-基于bs4库的HTML页面遍历方法 我们使用如下链接作为实验对象 https://python123.io/ws/demo.html 页面信息如下 利用requests库爬取出网页的HTML完整代码 1 import requests 2 r = requests.get("http://python123.io/ws/demo.html") 3 demo = r.text 4 print(demo) 网页内容如下 熟悉HTML页面架构

python爬虫之Scrapy框架中的Item Pipeline用法

当Item在Spider中被收集之后, 就会被传递到Item Pipeline中进行处理. 每个item pipeline组件是实现了简单的方法的python类, 负责接收到item并通过它执行一些行为, 同时也决定此item是否继续通过pipeline, 或者被丢弃而不再进行处理. item pipeline的主要作用 : 1. 清理html数据 2. 验证爬取的数据 3. 去重并丢弃 4. 将爬取的结果保存到数据库中或文件中 编写自己的item pipeline : process_item

Java-如何挖取某个网站中的ajax请求信息

通常情况,通过网络爬虫挖取到的基本为网页静态内容,而动态ajax取数的内容是我个人暂时不知如何一次性把网站中的ajax获取 这里介绍的是某个网站中的某一个ajax多某个table刷新,期数据,并提供其他操作,如下载: 假设我们需挖取某一个网站: 例:某个网站中的那些pdf文件,并下载下来 首先:需要分析期网页组成结果:查看是通过什么方式读取处理的.这里结束ajax的方案(其它异同,ajax只是对数据进行一个一次数据的请求) 具体操作已案例介绍为主: 首先分析需要使用到的是ajax使用的请求url

Python 爬取 北京市政府首都之窗信件列表-[信息展示]

日期:2020.01.25 博客期:133 星期六 [代码说明,如果要使用此页代码,必须在本博客页面评论区给予说明] //博客总体说明 1.准备工作 2.爬取工作 3.数据处理 4.信息展示(本期博客) 大年初一,先给大家说声“过年好”!嗯~说说今天写的部分,因为今天过大年嘛,也没有写什么特别难的东西!就是把上一回博客的内容进行整理,然后根据ECharts的接口进行数据可视化的展示! 下面是项目的目录结构: 嗯!老师说基本的页面是按照我的那个老模板来做的,这样比较省力气! Java部分: com

Python 脚本生成测试数据,Python生成随机数据,Python生成大量数据保存到文件夹中

代码如下: import random import datetime import time dataCount = 10*100*100 #10M. codeRange = range(ord('a'),ord('z')) alphaRange = [chr(x) for x in codeRange] alphaMax = len(alphaRange) daysMax = 42003 theDay = datetime.date(1900,1,1) def genRandomName(n