pythonはすべてのqq友達、すべてのグループのすべてのメンバーの一部の情報を取得し、リストをスプレッドシートファイルに保存します.
28852 ワード
本文の作者:峡州仙士
テキストリンク:https://cjh0613.github.io/blog/20200520getQQmembers.html
本サイト(峡州仙士のページ)のすべての文章は特別声明のほか、BY-NC-SAライセンス契約を採用しています.転載は出典を明記してください!
シーケンス
上半期に実用的なコードが山積みになっていることに気づいて、考えてみたら、やはりオープンソースでしょう.これは先に発表されました.{%note danger no-icon%}警告このコードを合理的に使用してください.広告、情報販売などの反人類用途での使用は厳禁です.テンセントサーバーに過負荷でアクセスしないように注意してください.
最新コードはG局Githubに転送されました.https://github.com/cjh0613/getQQmembers
(改良とPull Requestへようこそ)
主にselenium+chromeを使って、Tkinterの簡単なGUIをプラスして、コードは比較的に簡単で、詳しく言わないで、自分で味わってください:完成品:http://d0.ananas.chaoxing.com/download/7694e31d48eedb7b57e5aeefadf67134?fn=qq%E5%A4%87%E4%BB%BD
qq友达のリストを取得します
これはQQからチャージして得たもので、「原始データ」、「グループ化」、「表示名」、「QQ番号」を得ることができます.は自動的にQQを開いてチャージして、ホームページに登録して を下さい Qドルチャージ、チャージ画面 を開くチャージアカウント、ポイント交換、リスト を開くウィンドウをクリックした’はすでに登録してチャージインタフェースを開き、そしてリストボタン をクリックする.
qq友达のリストを取得します
これはQQ群管理から取得したもので、pandasライブラリを使って、表をエクスポートするのが超速くて、メンバー、群ニックネーム、QQ番号、性別、Q齢、入群時間、等級(ポイント)、最後の発言などの情報を得ることができます.エクスポートディレクトリを選択すると、QQ群管理が自動的に開きます. ログイン成功はQQ群インタフェース を選択するクリックウィンドウの「ログインして画面を開く」ボタン
テキストリンク:https://cjh0613.github.io/blog/20200520getQQmembers.html
本サイト(峡州仙士のページ)のすべての文章は特別声明のほか、BY-NC-SAライセンス契約を採用しています.転載は出典を明記してください!
シーケンス
上半期に実用的なコードが山積みになっていることに気づいて、考えてみたら、やはりオープンソースでしょう.これは先に発表されました.{%note danger no-icon%}警告このコードを合理的に使用してください.広告、情報販売などの反人類用途での使用は厳禁です.テンセントサーバーに過負荷でアクセスしないように注意してください.
最新コードはG局Githubに転送されました.https://github.com/cjh0613/getQQmembers
(改良とPull Requestへようこそ)
主にselenium+chromeを使って、Tkinterの簡単なGUIをプラスして、コードは比較的に簡単で、詳しく言わないで、自分で味わってください:完成品:http://d0.ananas.chaoxing.com/download/7694e31d48eedb7b57e5aeefadf67134?fn=qq%E5%A4%87%E4%BB%BD
qq友达のリストを取得します
これはQQからチャージして得たもので、「原始データ」、「グループ化」、「表示名」、「QQ番号」を得ることができます.
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([" "," "," ","QQ "])
for i in a:
if i.next_sibling !=' {{el.name}}({{el.qq}})':
#re,qq :
#pattern = re.compile(r'[1-9][0-9]{4,}')
#re, :
#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()
#
root.title(' QQ —— ')
#
root.geometry('400x200')
# ( , )
button = tk.Button(root, text=' , ', command=callback)
button.pack()
root.mainloop()
qq友达のリストを取得します
これはQQ群管理から取得したもので、pandasライブラリを使って、表をエクスポートするのが超速くて、メンバー、群ニックネーム、QQ番号、性別、Q齢、入群時間、等級(ポイント)、最後の発言などの情報を得ることができます.
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()
# '
'、'\t'
def delNT(s):
while s.startswith('
') or s.startswith('\t'):
s=s[1:]
while s.endswith('\t') or s.endswith('
'):
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):
#
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'}))<int(groupMemberNum):
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()
#
root.title(' QQ —— ')
#
root.geometry('400x200')
# ( , )
button = tk.Button(root, text=' ', command=callback)
button.pack()
root.mainloop()