1. 程式人生 > 其它 >Python 爬取全部QQ好友號碼

Python 爬取全部QQ好友號碼

記錄一下爬取自己的全部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))

成果展示