python 下载qq群文件_python获取所有qq好友、全部群所有成员部分信息,并保存列表至电子表格文件...
序
發(fā)現(xiàn)上半年壓了一堆實(shí)用代碼,想了一下,還是開源吧。這個(gè)就先發(fā)布了。
警告
請(qǐng)合理使用此代碼,嚴(yán)禁用于廣告、信息售賣等反人類用途
使用時(shí)請(qǐng)注意不要超負(fù)荷訪問騰訊服務(wù)器
(歡迎各位改良并Pull Request)
主要使用selenium+chrome,加了Tkinter的簡(jiǎn)單GUI,代碼比較簡(jiǎn)單,就不細(xì)說(shuō)了,請(qǐng)自行品味:
獲取qq好友列表
這個(gè)是從QQ充值獲取的,可得"原始數(shù)據(jù)",“分組”,“顯示名”,“QQ號(hào)”:
import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import tkinter as tk
from tkinter.filedialog import asksaveasfilename
from bs4 import BeautifulSoup
import lxml
import openpyxl
from openpyxl import Workbook
def callback():
driver.switch_to_frame('webpay-iframe')
iframe =driver.find_element_by_xpath('//*[@id="midas-webpay-main-1450000186"]/div[2]/div[1]/iframe')
driver.switch_to_frame(iframe)
html=driver.page_source
soup=BeautifulSoup(html,"lxml")
a=soup.find_all(attrs={'class':'icon-friend-s'})
wb = Workbook()
ws = wb.active
ws.append(["原始數(shù)據(jù)","分組","顯示名","QQ號(hào)"])
for i in a:
if i.next_sibling !=' {{el.name}}({{el.qq}})':
#re,qq匹配:
#pattern = re.compile(r'[1-9][0-9]{4,}')
#re,括號(hào)匹配:
#pattern = re.compile(r'(?<=\().*?(?=\))')
#m = pattern.search(i.next_sibling)
k=0
for x in i.next_sibling:
if x == '(':
f=k
if x == ')':
l=k
k=k+1
ws.append([i.next_sibling,i.next_sibling.parent.parent.parent.parent.find(attrs={'class':'icon-more-friend'}).next_sibling,i.next_sibling[:f],i.next_sibling[f+1:l]])
print([i.next_sibling,i.next_sibling.parent.parent.parent.parent.find(attrs={'class':'icon-more-friend'}).next_sibling,i.next_sibling[:f],i.next_sibling[f+1:l]])
wb.save(asksaveasfilename(defaultextension ='.xlsx',filetypes = [('Excel 工作簿', '*.xlsx')]))
#瀏覽器位置
driver=webdriver.Chrome()
browser =driver
browser.get("https://pay.qq.com/index.shtml")
root = tk.Tk()
# 設(shè)置窗口標(biāo)題
root.title('從QQ充值獲取好友列表——峽州仙士制作')
# 設(shè)置窗口大小
root.geometry('400x200')
# 進(jìn)入消息循環(huán)(檢測(cè)到事件,就刷新組件)
button = tk.Button(root, text='已登陸并打開充值界面,且點(diǎn)開列表', command=callback)
button.pack()
root.mainloop()
獲取qq好友列表
這個(gè)是從QQ群管理獲取的,用了pandas庫(kù),導(dǎo)出表格超快,可得成員、群昵稱、QQ號(hào)、性別、Q齡、入群時(shí)間、等級(jí)(積分)、最后發(fā)言等信息:
import selenium
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import tkinter as tk
from tkinter.filedialog import askdirectory
from lxml import etree
import lxml
from bs4 import BeautifulSoup
import pandas as pd
import time
path=askdirectory()
#去字符串兩端'\n'、'\t'
def delNT(s):
while s.startswith('\n') or s.startswith('\t'):
s=s[1:]
while s.endswith('\t') or s.endswith('\n'):
s=s[:-1]
return s
def callback():
a=driver.find_elements_by_class_name('icon-def-gicon')
Num= len(a)
time_start=time.time()
for i in range(0,Num):
#點(diǎn)擊進(jìn)入具體群
a=driver.find_elements_by_class_name('icon-def-gicon')
#time.sleep(0.5)
a[i].click()
time.sleep(1)
html=driver.page_source
soup=BeautifulSoup(html,"lxml")
groupTit=delNT(soup.find(attrs={'id':'groupTit'}).text)
groupMemberNum=delNT(soup.find(attrs={'id':'groupMemberNum'}).text)
while len(soup.find_all(attrs={'class':'td-no'}))
driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
time.sleep(0.1)
html=driver.page_source
soup=BeautifulSoup(html,"lxml")
res_elements = etree.HTML(html)
table = res_elements.xpath('//*[@id="groupMember"]')
table = etree.tostring(table[0], encoding='utf-8').decode()
df = pd.read_html(table, encoding='utf-8', header=0)[0]
try:
print(str(int((time.time()-time_start)/60))+':'+str(int((time.time()-time_start)%60)),'第'+str(i+1)+'群,'+str(int((i+1) / Num * 100))+'% '+groupTit+' 此表完成')
writer = pd.ExcelWriter(path+'/'+groupTit+'.xlsx')
df.to_excel(writer,'Sheet1')
writer.save()
except:
k=0
for v in groupTit:
if v == '(':
f=k
if v == ')':
l=k
k=k+1
writer = pd.ExcelWriter(path+'/'+groupTit[f+1:l]+'.xlsx')
df.to_excel(writer,'Sheet1')
writer.save()
driver.find_element_by_id('changeGroup').click()
time.sleep(1)
driver=webdriver.Chrome()
browser =driver
browser.get("https://qun.qq.com/member.html")
root = tk.Tk()
# 設(shè)置窗口標(biāo)題
root.title('從QQ群管理獲取群成員列表——峽州仙士制作')
# 設(shè)置窗口大小
root.geometry('400x200')
# 進(jìn)入消息循環(huán)(檢測(cè)到事件,就刷新組件)
button = tk.Button(root, text='已登陸并打開界面', command=callback)
button.pack()
root.mainloop()
本文作者: 峽州仙士
版權(quán)聲明: 本網(wǎng)站(峽州仙士之頁(yè))所有文章除特別聲明外,均采用 BY-NC-SA 許可協(xié)議。轉(zhuǎn)載請(qǐng)注明出處!
總結(jié)
以上是生活随笔為你收集整理的python 下载qq群文件_python获取所有qq好友、全部群所有成员部分信息,并保存列表至电子表格文件...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML(一、语法规范,二、结构标签,三
- 下一篇: python之旅六【第六篇】模块