记录一下爬取自己的全部QQ好友的QQ号码的过程
首先通过在QQ邮箱页面抓包发现了一个网址
把连接放到python中进行爬取
发现爬取的内容与浏览器看到的不同,于是我们添加标头
看到成功返回了内容
但却发现其类型虽然为json格式,但却存在许多格式错误导致无法通过json模块进行转化
虽说我们可以通过网上的json格式化工具进行转化,但是由于我想使其步骤尽量由Python实现,所以我采取了较为笨拙一点的正则表达式进行提取
我们首先通过观察成功格式化的json文本发现关键信息主要存放在以下两个分组中
sortbyupdatetime
存放着最近联系人以及全部的好友信息
好友信息的格式如下qqgroups
将上面信息中的编号分组放置
于是我们开始完善代码,解析代码如下
response = requests.get(url, headers=headers).text
friend_info = re.findall('sortbyupdatetime(.*?)qqgroups', response, re.S)[0]
friend_info = friend_info.strip(" :,[]").split('],[')
# 将编号跟QQ号保存到字典中
dic = {}
for i in friend_info:
i = i.split(',')
dic[i[0].strip('""')] = i[2].strip('@qq.com"')
# 将分组中的编号转化为列表形式
qqgroups = re.findall('qqgroups(.*?)groups', response)[0]
qqgroups = qqgroups.strip(" :,[]")[1:-1].split('],[')
# 根据编号提取QQ号
for i in qqgroups:
find_numbers = re.findall(r'\[(.*?)\]', str(i))[0].split(',')
for find_number in find_numbers:
if find_number in dic:
qqs.append(dic[find_number])
# 保存到文本文件中
with open('qq.txt', 'w', encoding='utf-8') as file:
file.write('\n'.join(qqs))
成果展示