爬虫项目十五:你了解你的QQ好友吗?教你用Python采集QQ好友数据
文章目录
- 前言
- 一、方法的选择
- 二、通过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好友数据相关推荐
- 网络云存储技术Windows server 2012 (项目十五 存储服务间的数据同步)
网络云存储技术Windows server 2012 (项目十五 存储服务间的数据同步) 目录 前言 一.项目背景 二. 项目实训题 前言 网络存储技术,是以互联网为载体实现数据的传输与存储,它采用面 ...
- 爬虫项目十四:Python爬下豆瓣《我的姐姐》两千条影评,看看大家对其评价如何
文章目录 前言 一.分析URL 二.获取影评 三.代码实现 四.词云 前言 爬取豆瓣影评,爬虫代码已经封装好,修改请求头 和url即可采集你想要采集的电影影评 提示:以下是本篇文章正文内容,下面案例可 ...
- 只需五步!哈佛学霸教你用Python分析相亲网站数据,在两万异性中找到真爱
大数据文摘出品 来源:Wired 编译:啤酒泡泡.张大笔茹.张睿毅.牛婉杨 想脱单?那还不容易! 如果身在美国,就像其余四千万单身男人一样,注册一下Match.com, J-Date和OkCupid等 ...
- Python采集某宝数据,轻松解决这个价值千元的外包项目
前言 今天分享做的一个外包项目,是用Python采集某宝的数据,资金诱人所以立马接了,嘿嘿 selenium Selenium 是一个 Web 的自动化测试工具,最初是为网站自动化测试而开发的,就像玩 ...
- Python采集烤肉店数据,又是一个外包项目,努力挣钱,实现吃肉自由
前言 哈喽啊,铁子们,现在好饿好想吃肉啊,实在有点受不了了,刚刚就看了某软件上的烤肉店,越看越饿,但是又不知道吃哪家好,索性就用Python采集一下这些烤肉店的数据吧 准备环境 python 3.6 ...
- 爬虫(十五):scrapy中的settings详解
Scrapy设定(settings)提供了定制Scrapy组件的方法.你可以控制包括核心(core),插件(extension),pipeline及spider组件.设定为代码提供了提取以key-va ...
- 我的物联网项目(十五) 微服务业务拆分
微服务架构无论从业务层面,还是技术层面,要思考和解决的问题很多,其中有三大问题只要用到了微服务架构就必须要面对的,那就是拆分,事务,和查询. 当初规划这个2.0平台用微服务架构本身的目的是将平台以业务 ...
- 爬虫项目十:Python苏宁易购商品数据、评论数据爬取
文章目录 前言 一.商品数据 1.分析url 2.解析数据 3.实现翻页 二.评论数据 前言 利用Python对苏宁易购商品数据评价数据实现爬取 提示:以下是本篇文章正文内容,下面案例可供参考 一.商 ...
- 2021-12-22 vue移动端卖座电影项目(十五) 如何将项目上传到远程仓库
文章目录 0.git的介绍,官网,下载和安装 介绍 官网和下载地址和安装 2.git的使用命令 2.1.本地 2.2.上传到在线仓库:github,gitee等 2.3.下载 2.4.分支 3.上传v ...
- 客快物流大数据项目(十五):DockeFile常用命令
目录 DockeFile常用命令 一.FROM 二.MAINTAINER 三.RUN
最新文章
- 用C语言解“12-24小时制”题
- scratch小游戏脚本大全_酷酷带你一起做小游戏--跳一跳
- Chrome 私人珍藏-stylus插件实现个性化百度界面定制
- web项目html引入css文件路径,详解Webpack和Webpack-simple中如何引入CSS文件_旧店_前端开发者...
- Android利用广播实现ViewPager中item之间的数据通信
- 04 | 内存快照:宕机后, Redis 如何实现快速恢复
- Composer 常用命令总结(三)
- Android 系统(179)--- .ko 加载失败
- Maven学习总结(30)——Maven项目通用三级版本号说明
- mysql连接不用数据库名称_C++连接MySQL数据库
- WPF-创建超链接文本
- 电阻中联分压电路的计算
- matplotlib设置x轴和y轴 设置
- Java基础 -> 为什么⽤线程池?线程池的创建?
- 特征:什么是特征和特征选择?
- redis保护模式的报错
- 关于dva框架的二三事
- luoguP1888 【三角函数】
- 逻辑运算符以及逻辑表达式
- 《草书识别》隐私政策
热门文章
- 全网目前最全python例子
- 让聊天机器人来填平技术鸿沟吧!
- 梅西 (Lionel Messi)
- CSS+DIV 网页重构技术
- 用计算机和电视机组成家庭影院,如何让我的电脑连上我的家庭影院?
- IDEA项目上传码云报错:Push rejected: Push to origin/master was rejected
- 计算机蓝屏代码0x0000007b,win7系统开机蓝屏提示STOP:0X0000007B错误代码怎么办
- 苹果电脑自动重启怎么回事
- WIN10设置自动拨号联网任务,实现开机、断网自动重连
- Word跨文件使用格式刷