python qq群文件_python 获取qq群成员列表数据
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
import time
import xlsxwriter
from selenium import webdriver
from bs4 import BeautifulSoup
import io
import sys
def qq_login(gid):
"""
通過selenium模擬登錄,獲取群成員信息
:param gid: 群號
:return: 頁面源碼
"""
driver = webdriver.Chrome()
driver.get('https://qun.qq.com/member.html#gid=%s' % gid)
driver.maximize_window()
time.sleep(3)
# 切換iframe授權登錄
driver.switch_to_frame('login_frame')
driver.find_element_by_class_name('img_out_focus').click()
# 拉動滑動條加載剩余數據
for i in range(1000):
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)
# 獲取頁面源碼并寫入緩存
res = driver.page_source
driver.close()
return res
def dispose(res):
"""
處理頁面源碼數據,提取群成員信息
:param res: 頁面源碼
:return: 處理后的list_a列表
"""
# 改變標準輸出的默認編碼
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')
soup = BeautifulSoup(res, 'lxml')
# 查找tr標簽下的class屬性包含‘mb’的節點樹
c = soup.find_all('tr', attrs={"class": re.compile('mb')})
list_a = []
for i in c:
# 處理一些特殊字符‘\n’,'\t',替換成‘,’
str_a = i.text.replace('\n', '').replace('\t', ',')
# 通過正則表達式,切割以‘,’分割的字符串組成列表
data = re.split(r',', str_a)
# 去除空字符""
data_list = [i for i in data if i != '']
# 獲取頭像地址并插入列表
img = "https:" + i.img.get('src')
# 將頭像地址插入列表中第3個位置的元素
data_list.insert(2, img)
# 刪除列表中的序號
del data_list[0]
# 由于前面刪除了空字符"",導致有些人的群昵稱為空也刪除,這里手動添加進去。
if len(data_list) < 9:
data_list.insert(2, '')
# 每一個成員信息為一個列表,添加到list_a作為元素
list_a.append(data_list)
return list_a
def write_execl(list_a):
"""
寫入execl表格
:param list_a: 數據列表
:return:
"""
if len(list_a) > 2:
# 創建execl
new_time = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime())
workbook = xlsxwriter.Workbook('{}.xlsx'.format(new_time)) # 新建excel表
worksheet = workbook.add_worksheet('sheet1') # 新建sheet(sheet的名稱為"sheet1")
bold = workbook.add_format({
'bold': 1, # 字體加粗
'fg_color': 'green', # 單元格背景顏色
'align': 'center', # 對齊方式
'valign': 'vcenter', # 字體對齊方式
})
# 寫表頭
work_header = ['QQ昵稱', '頭像地址', '群昵稱', 'QQ號', '性別', 'Q齡', '入群時間', '等級(積分)', '最后發言']
worksheet.write_row('A1', work_header, bold)
# 遍歷多少條數據就寫入多少行數據到execl,表頭已經占了A1,所以從A2開始寫入,index從0開始遍歷(2+index)
for index in range(len(list_a)):
worksheet.write_row('A%s' % (2 + index), list_a[index])
# 最后關閉workbook,否則不會產生execl文件
workbook.close()
else:
print('請檢查群號是否有誤,沒有獲取到群成員信息,放棄寫入execl')
if __name__ == '__main__':
res = qq_login('填寫群號')
list_a = dispose(res)
write_execl(list_a)
總結
以上是生活随笔為你收集整理的python qq群文件_python 获取qq群成员列表数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: S3C2440 GPS串口配置以及数据读
- 下一篇: 技术开发119