文章目录

  • 前言
  • 一、方法的选择
  • 二、通过QQ空间获取好友信息
  • 三、通过QQ查找获取好友信息

前言

关于写这篇文章我做了很多工作,想了很多办法,尝试过QQ邮箱、QQ空间、QQ查找抓包,最终也没有选出一个好方法,不能爬下完全的数据,但能尽可能的爬下多的数据 包括昵称、网名、分组、年龄、地址

看一下效果


提示:以下是本篇文章正文内容,下面案例可供参考

一、方法的选择

首先我们先看一下如果通过QQ邮箱能获取什么数据,如果说是通过QQ邮箱爬QQ好友信息,那只能拿到昵称和QQ邮箱号 所以不选择这中方法


再来看看通过QQ空间能拿到哪些数据,我们在QQ空间发动态那里点击部分好友可见,目的是将好友数据全部加载出来,观察抓包后的结果 可以看到其中有分组、昵称、网名、qq号、头像链接


我们在来看看QQ查找能抓到什么数据,我们进入find.qq.com,在其中输入qq查找,抓包 看能抓到什么数据,我们可以看到有QQ号,年龄、国家、性别、省份、头像链接


最终我选择的方法是通过QQ空间和QQ查找两种方法相结合的方式,尽可能的获取多的数据

二、通过QQ空间获取好友信息

现在我们通过QQ空间获取好友信息,因为只有通过QQ空间获得了好友的QQ号,我们才能通过QQ查找获取更多的数据

在上面我们已经找到了QQ空间好友信息数据包,并且所有的QQ好友信息都在一个数据包中,现在我们可以直接写代码

head={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36','cookie':'tvfe_boss_uuid=3eec8ab61924dc8d; pgv_pvid=5532717881; RK=CnIgT93OeT; v8=44'
}
text=requests.get(url=url,headers=head).text
text=text.replace("_Callback","").replace("(","").replace(")","")
text="".join([text.strip().rsplit("}", 1)[0], "}"])
data=json.loads(text)
for da in data["data"]["items"]:dic={}try:dic["qq"]=da["uin"] #QQ号码except:dic["qq"]=""try:dic["groupid"]=da["groupid"]  #QQ分组except:dic["groupid"]=""try:dic["name"]=da["name"]  #QQ网名except:dic["name"]=""try:dic["remark"]=da["remark"]  #QQ备注except:dic["remark"]=""try:dic["img"]=da["img"]  #QQ头像链接except:dic["img"]=""try:dic["yellow"]=da["yellow"]  #黄钻等级except:dic["yellow"]=""with open(".//QQ_KJ.csv", "a+", encoding="utf-8") as f:writer = csv.DictWriter(f, dic.keys())writer.writerow(dic)

三、通过QQ查找获取好友信息

通过上面的操作我们已经拿到了六列QQ好友信息,现在我们来通过QQ查找获取其他信息

我们在最上面已经抓包获取了数据包,现在我们来分析一下他的url和所带的有用参数,url是不变的,在边的一直是参数准确的说变得就是keyword 就是好友QQ号

url:https://find.qq.com/proxy/domain/cgi.find.qq.com/qqfind/buddy/search_v3
参数:
keyword= QQ好友QQ号
ldw= 你自己的参数

通过上面的url和参数,利用requests访问就可以获取QQ好友的部分数据,现在我们来代码实现

#读取数据names=["qq","groupid","name","remark","img","yellow"]df=pd.read_csv("QQ_KJ.csv",names=names)print('-' * 30 + "开始获取QQ查找数据" + '-' * 30)#通过qq号生成参数params_list=[]for qq in df.qq:params={'keyword':qq,'ldw':你的参数}params_list.append(params)print('-'*30+"共生成%d个参数"%(len(params_list))+'-'*30)head = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36','cookie': 'tvfe78CA4C2DAE58860A362928729B50; uid=1015261235; skey=@6bAznJAMu'}url="https://find.qq.com/proxy/domain/cgi.find.qq.com/qqfind/buddy/search_v3"#遍历参数列表访问页面解析数据print('-' * 30 + "开始访问页面获取数据"+ '-' * 30)for params in params_list:#因为有的QQ好友设置了限制 限制QQ查找找到自己 所有trytry:text=requests.get(url=url,headers=head,params=params).json()data=text["result"]["buddy"]["info_list"][0]with open(".//QQ_find.csv", "a+", encoding="utf-8") as f:writer = csv.DictWriter(f, data.keys())writer.writerow(data)except:pass

最后我们将两个文件的数据处理一下

def Save_data(self):names = ["qq", "groupid", "name", "remark", "img", "yellow"]df1 = pd.read_csv("QQ_KJ.csv", names=names)names = ["qq", "name", "country", "provinc", "city", "gender","age","url"]df2 = pd.read_csv("QQ_find.csv", names=names).drop(["url","qq"],axis=1)df=pd.merge(df1,df2,on="name",how="left") #根据name列左连接两个表df=df.drop_duplicates("remark").reset_index(drop=True) #根据备注列去重os.remove("QQ_find.csv") #删除表os.remove("QQ_KJ.csv") #删除表df.to_csv("QQ_find.csv",encoding="utf_8_sig")

个人主页已经更新多个爬虫案例,有兴趣可以去看看,所有源码在公众号“阿虚学Python”中都可以获得,这次案例回复“QQ好友”获取

爬虫项目十五:你了解你的QQ好友吗?教你用Python采集QQ好友数据相关推荐

  1. 网络云存储技术Windows server 2012 (项目十五 存储服务间的数据同步)

    网络云存储技术Windows server 2012 (项目十五 存储服务间的数据同步) 目录 前言 一.项目背景 二. 项目实训题 前言 网络存储技术,是以互联网为载体实现数据的传输与存储,它采用面 ...

  2. 爬虫项目十四:Python爬下豆瓣《我的姐姐》两千条影评,看看大家对其评价如何

    文章目录 前言 一.分析URL 二.获取影评 三.代码实现 四.词云 前言 爬取豆瓣影评,爬虫代码已经封装好,修改请求头 和url即可采集你想要采集的电影影评 提示:以下是本篇文章正文内容,下面案例可 ...

  3. 只需五步!哈佛学霸教你用Python分析相亲网站数据,在两万异性中找到真爱

    大数据文摘出品 来源:Wired 编译:啤酒泡泡.张大笔茹.张睿毅.牛婉杨 想脱单?那还不容易! 如果身在美国,就像其余四千万单身男人一样,注册一下Match.com, J-Date和OkCupid等 ...

  4. Python采集某宝数据,轻松解决这个价值千元的外包项目

    前言 今天分享做的一个外包项目,是用Python采集某宝的数据,资金诱人所以立马接了,嘿嘿 selenium Selenium 是一个 Web 的自动化测试工具,最初是为网站自动化测试而开发的,就像玩 ...

  5. Python采集烤肉店数据,又是一个外包项目,努力挣钱,实现吃肉自由

    前言 哈喽啊,铁子们,现在好饿好想吃肉啊,实在有点受不了了,刚刚就看了某软件上的烤肉店,越看越饿,但是又不知道吃哪家好,索性就用Python采集一下这些烤肉店的数据吧 准备环境 python 3.6 ...

  6. 爬虫(十五):scrapy中的settings详解

    Scrapy设定(settings)提供了定制Scrapy组件的方法.你可以控制包括核心(core),插件(extension),pipeline及spider组件.设定为代码提供了提取以key-va ...

  7. 我的物联网项目(十五) 微服务业务拆分

    微服务架构无论从业务层面,还是技术层面,要思考和解决的问题很多,其中有三大问题只要用到了微服务架构就必须要面对的,那就是拆分,事务,和查询. 当初规划这个2.0平台用微服务架构本身的目的是将平台以业务 ...

  8. 爬虫项目十:Python苏宁易购商品数据、评论数据爬取

    文章目录 前言 一.商品数据 1.分析url 2.解析数据 3.实现翻页 二.评论数据 前言 利用Python对苏宁易购商品数据评价数据实现爬取 提示:以下是本篇文章正文内容,下面案例可供参考 一.商 ...

  9. 2021-12-22 vue移动端卖座电影项目(十五) 如何将项目上传到远程仓库

    文章目录 0.git的介绍,官网,下载和安装 介绍 官网和下载地址和安装 2.git的使用命令 2.1.本地 2.2.上传到在线仓库:github,gitee等 2.3.下载 2.4.分支 3.上传v ...

  10. 客快物流大数据项目(十五):DockeFile常用命令

    目录 DockeFile常用命令 一.FROM 二.​​​​​​​MAINTAINER 三.​​​​​​​RUN

最新文章

  1. 用C语言解“12-24小时制”题
  2. scratch小游戏脚本大全_酷酷带你一起做小游戏--跳一跳
  3. Chrome 私人珍藏-stylus插件实现个性化百度界面定制
  4. web项目html引入css文件路径,详解Webpack和Webpack-simple中如何引入CSS文件_旧店_前端开发者...
  5. Android利用广播实现ViewPager中item之间的数据通信
  6. 04 | 内存快照:宕机后, Redis 如何实现快速恢复
  7. Composer 常用命令总结(三)
  8. Android 系统(179)--- .ko 加载失败
  9. Maven学习总结(30)——Maven项目通用三级版本号说明
  10. mysql连接不用数据库名称_C++连接MySQL数据库
  11. WPF-创建超链接文本
  12. 电阻中联分压电路的计算
  13. matplotlib设置x轴和y轴 设置
  14. Java基础 -> 为什么⽤线程池?线程池的创建?
  15. 特征:什么是特征和特征选择?
  16. redis保护模式的报错
  17. 关于dva框架的二三事
  18. luoguP1888 【三角函数】
  19. 逻辑运算符以及逻辑表达式
  20. 《草书识别》隐私政策

热门文章

  1. 全网目前最全python例子
  2. 让聊天机器人来填平技术鸿沟吧!
  3. 梅西 (Lionel Messi)
  4. CSS+DIV 网页重构技术
  5. 用计算机和电视机组成家庭影院,如何让我的电脑连上我的家庭影院?
  6. IDEA项目上传码云报错:Push rejected: Push to origin/master was rejected
  7. 计算机蓝屏代码0x0000007b,win7系统开机蓝屏提示STOP:0X0000007B错误代码怎么办
  8. 苹果电脑自动重启怎么回事
  9. WIN10设置自动拨号联网任务,实现开机、断网自动重连
  10. Word跨文件使用格式刷