超简单的方法找出QQ共同好友
先说两句废话,今天和小伙伴在看空间的小秘密,惊讶的发现有个共同的小秘密,就想把他找出来hhh,然后就有了这一步
1. 获取数据
先打开网页版的QQ邮箱,并且进入写信界面,然后!!!把右侧好友列表全部展开一遍(否则不会获取好友数据)
然后就可以开始获取数据了
①先按下强大的F12,接着选取页面的元素(快捷键Ctrl+Shift+C)
②选中右侧好友列表上方的查找联系人,会跳转到对应的div标签,但我们要的数据在他的上上上级标签里边,就是这个标签↓↓↓
<div id="AddrTab" class="addrtab cpright" style="">
③复制这个标签的内容,里边就包含了我们所有的好友数据,随便存到一个txt文件里边就好,接下来用。
这里也给出好友数据所在标签的Xpath路径,会用的小伙伴可以直接用
/html/body/form[2]/div[2]/div[1]/div[4]
2. 数据清洗
这里的清洗很简单,就是把QQ号和备注提取出来存到excel里边,等朋友的excel也准备好了,两个文档查重就找到了共同好友。话不多说直接上代码
import re
import xlwtfile_name = "QQ好友.txt"f = open(file_name, encoding="UTF-8")
text = f.read()# 将数据分行,不然看着难受
split_text = text.split("</div>")# 新建excel文档用于保存
data = xlwt.Workbook(encoding='UTF-8')
sheet = data.add_sheet("qq好友")# 匹配每一个人
pattern = r'title=".*?@qq.com" class="lm_addr" tabindex="0">.*?</a>'
compile_re = re.compile(pattern)# 匹配QQ号用
qq_pattern = r'title=".*?@qq.com"'
qq_re = re.compile(qq_pattern)# 匹配姓名用
name_pattern = r'"lm_addr" tabindex="0">.*?</a>'
name_re = re.compile(name_pattern)# 记录写到第几行了
row = 0# 匹配所有符合正则表达式的内容
for i in split_text:name_list = compile_re.findall(i)if len(name_list) == 1: # 仅匹配到一个姓名qq = str(qq_re.findall(name_list[0])[0][7:-8])name = str(name_re.findall(name_list[0])[0][23:-4])# 将 < > " & 空格几个转义字符转为原字符,应该还有其他需要转义的字符,这里没考虑name = name.replace(" ", " ").replace("<", "<").replace(">", ">").replace("&", "&")sheet.write(row, 0, qq)sheet.write(row, 1, name)row = row + 1
# 保存excel文档,选择的包xlwt仅支持xls格式文件,不支持导出到xlsx
data.save(file_name + ".xls")
然后保存的excel是下边这种样式的:
备注 | |
---|---|
123456789 | 卖女孩的小火柴 |
12345678 | 容嬷嬷当年也是一枝花 |
1234567 | 加肥猫 |
123456 | 我叫抄级学霸 |
12345 | 老阿姨 |
到这里自己的好友列表就提取完毕了(可以做个备份hhh)。现在就只差朋友的列表了
3. 查找共同好友
这时候好友的excel也已经发给你了,虽然查重用excel就可以完成,但我还是选择用python装个X
还是直接上代码
import xlrdfilename_1 = "我的好友.xls" # 我的好友excel
filename_2 = "朋友的好友xls" # 朋友的好友exceldata_1 = xlrd.open_workbook(filename_1) # 我的
data_2 = xlrd.open_workbook(filename_2) # 朋友的
table_1 = data_1.sheet_by_index(0) # 我的
table_2 = data_2.sheet_by_index(0) # 朋友的# 我的好友:获取有多少行,然后逐行转换成json数据
rows_1 = table_1.nrows
list_1 = {}
for i in range(0, rows_1):qq_id = table_1.row(i)[0].valueqq_name = table_1.row(i)[1].valuelist_1[qq_id] = qq_name# 朋友的好友:获取有多少行,然后逐行转换成json数据
rows_2 = table_2.nrows
list_2 = {}
for i in range(0, rows_2):qq_id = table_2.row(i)[0].valueqq_name = table_2.row(i)[1].valuelist_2[qq_id] = qq_name# 开始查重
keys_2 = list_2.keys()
for key in list_1.keys():if key in keys_2:print(key)print(list_1[key])print(list_2[key])
这里是直接输出,没有再去保存
然后,就是接着开篇的废话了,我和朋友的共同好友结果很出乎意料,,,,总共输出了两个QQ号:一个是我的,另一个是朋友的。查了一下说QQ会把自己也算在好友列表中,就像是自己加了自己,所以才会出现“你们有1个共同好友”。但是这个空间的小秘密是谁发的就很奇怪了(确定不是我俩发的),就随缘吧
这就是我的办法了,喜欢的朋友不妨仔细看一看,如果有改进的地方,热烈欢迎!
我的,另一个是朋友的。查了一下说QQ会把自己也算在好友列表中,就像是自己加了自己,所以才会出现“你们有1个共同好友”。但是这个空间的小秘密是谁发的就很奇怪了(确定不是我俩发的),就随缘吧
这就是我的办法了,喜欢的朋友不妨仔细看一看,如果有改进的地方,热烈欢迎!
超简单的方法找出QQ共同好友相关推荐
- 找出QQ共同好友的实现
以下是qq的好友列表数据,冒号前是一个用,冒号后是该用户的所有好友(好友关系是单向的,也就是说A是B好友,B不一定是A好友) A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A ...
- hadoop找出QQ共同好友算法实现
背景 A:B,C,D,E,F 表示A有bcdef好友 B:C,D,H,Y 以上可知道AB的共同好友为CD 思路: 1:我们先找出一个人被哪几个人共同拥有 测试数据: 2:第一阶段mr程序: packa ...
- MapReduce例子——找出QQ共同好友
///\\\\\\\\ fri.txt 如下: person: friend1, friend2, friend3, friend4, -.. A:B,C,D,F,E,O B:A,C,E,K C:F, ...
- Java黑皮书课后题第7章:7.14(计算gcd)编写方法,返回个数不确定的整数的最大公约数。编写一个测试程序,提示用户输入5个数字,调用该方法找出这些数的最大公约数,并显示这个最大公约数
7.14(计算gcd)编写方法,返回个数不确定的整数的最大公约数.编写一个测试程序,提示用户输入5个数字,调用该方法找出这些数的最大公约数,并显示这个最大公约数 题目 题目描述 破题 代码 运行实例 ...
- 如何将扫描PDF文件转换成word,两个超简单的方法一看就会
在工作中我们都会经常接触到PDF文件,但是这些都是比较常见的,有时候会因为工作的需要要接触扫描格式的文件,比较难的是需要将扫描PDF文件转换成Word,很多人就很头疼,不知道该从哪里开始下手去做,虽然 ...
- “很抱歉,出现错误,word不能启动”超简单解决方法
"很抱歉,出现错误,word不能启动"超简单解决方法 问题描述 环境 解决方法 问题描述 环境 win7 旗舰版(64位) word版本(2016) 解决方法 1.右键打开文件属性 ...
- 快速找出QQ群成员中不在名单内的人
快速找出QQ群成员中不在名单内的人 Created: Aug 15, 2020 10:21 PM Tags: Python, 计划中 Updated: Aug 17, 2020 10:45 PM 需求 ...
- 准确找出QQ群里长期潜水的成员踢出去(转)
准确找出QQ群里长期潜水的成员踢出去(转) QQ群解除了以前不能多人同时聊天的限制,多个好友可以在群中即时交流.笔者也建立了一个IT作者编辑群,随着加入人数的增多,慢慢达到了群人数的上限,不能够再加入 ...
- mapreduce应用-找出扣扣共同好友
需求:找出扣扣共同好友 用户:好友,好友2,- A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A,E,F,L E:B,C,D,M,L F:A,B,C,D,E,O,M G:A, ...
- 今年生男孩取什么名好的超简单起名方法
想要给孩子起个好名字,还真的是不容易.想想起个名字,要差一堆的字典,看一堆的名字释义.这还真的不是一件简单的事情啊.而且起名字的时候,可能还要担心犯了一些忌讳就很心酸了. 那先看看宝宝要怎么起名好了- ...
最新文章
- R语言ggplot2可视化:使用scale_shape_identity函数显示pch点形状、使用geom_text函数为pch形状添加标(plot characters)
- poj1256(贪心+并查集)
- 《企业自主搞定ERP》试读:第一章-Odoo概述
- VTK:Medical之MedicalDemo3
- 自动论文生成器 python_python生成器
- 2019 年备受争议的 Facebook 能否走出去年的阴影?| 畅言
- 我的世界java致命错误_《我的世界》六个“致命错误”,最后一个“不作死就不会死”...
- 手把手教你进行R语言的安装及安装过程中相关问题解决方案...
- 互联网小团队创业启示录
- Direct3D学习笔记
- ext2、ext3、ext4文件系统区别
- ATLAS.ti 9(质性研究分析软件)官方中文版V9.0.20.0 | 质性分析软件Atlas.ti下载 | atlas软件是什么软件
- Cameralink转HDMI接口转换模块
- 激光防护屏 激光防护屏
- c++ Win x64 注册表操作
- git pull --rebase的作用是什么,它与git pull有什么区别?
- Daedalus Icarus
- centos7 | All matches were filtered out by modular filtering for argument: mysql-community-server
- 微信小程序获取用户手机号存数据库,前后端都有《Java后台版 》
- 远程计算机的凭据无法工作,Windows远程桌面时提示凭证不工作问题的解决办法...