欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python selenium 加載并保存QQ群成員,去除其群主、管理員信息的示例代碼

 更新時(shí)間:2020年05月28日 09:22:50   作者:smart_num_1  
這篇文章主要介紹了Python selenium 加載并保存QQ群成員 去除其群主、管理員信息的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

一位伙計(jì)自己開了個(gè)游戲室,想在群里拉點(diǎn)人,就用所學(xué)知識(shí)幫幫忙,于是就有了這篇文章,今天小編特此通過實(shí)例代碼給大家介紹下Python selenium 加載并保存QQ群成員去除其群主、管理員信息的示例代碼

模擬登陸頁(yè)面

頁(yè)面分析

思路:

點(diǎn)擊登陸按鈕
選擇要登陸的賬號(hào)

在這里插入圖片描述

代碼實(shí)現(xiàn)

# Author:smart_num_1
# Blog:https://blog.csdn.net/smart_num_1
# WeChat:Be_a_lucky_dog

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

def login(driver = None):
 already_dic = {}
 # 創(chuàng)建一個(gè)字典,保存電腦登陸的QQ
 
 login_button = WebDriverWait(driver = driver,timeout = 100).until(EC.presence_of_element_located((By.XPATH,'//p[@class="user-info"]/a')))
 login_button.click()
 # 點(diǎn)擊登錄,獲取電腦登陸的QQ
 
 already_login_number = WebDriverWait(driver = driver,timeout = 100).until(EC.presence_of_element_located((By.XPATH,'//div[@id="loginWin"]/iframe')))
 driver.get(url = already_login_number.get_attribute('src'))
 # 此步驟目的,是因?yàn)榈卿浛蚴且粋€(gè)子頁(yè)面,在上一級(jí)頁(yè)面中獲得到的這個(gè)子頁(yè)面
 
 already_login_numbers = WebDriverWait(driver = driver,timeout = 100).until(EC.presence_of_all_elements_located((By.XPATH,'//span[contains(@class,"nick")]')))
 # 獲取電腦登陸的QQ
 
 print('在以下賬號(hào)中選擇所需賬號(hào)')
 for already_login_number in already_login_numbers:
  already_dic[already_login_number.get_attribute('innerText')] = already_login_number
  print(already_login_number.get_attribute('innerText'))
 QQ_NeedToLogin = input('需要登陸: ')
 # 通過獲取鍵名,在 already_dic 獲得相應(yīng)的鍵值
 already_dic[QQ_NeedToLogin].click()
 # 模擬點(diǎn)擊要登陸的QQ,達(dá)到登陸的效果
 time.sleep(1)

if __name__ == '__main__':
	start_url = 'https://qun.qq.com/index.html#click' 
	# 群首頁(yè),用來登陸賬號(hào)
	driver = webdriver.Chrome(executable_path = './chromedriver.exe')
	# 因?yàn)閟elenium 需要用到瀏覽器、瀏覽器驅(qū)動(dòng),但是還要配置環(huán)境變量,很麻煩,如果這樣指定 webdriver 路徑的話,就可以省去那一步
	driver.get(url=start_url)
 login(driver=driver)

選擇所需加載群

頁(yè)面分析

打開群管理界面,會(huì)看到這樣的信息,我們的目的是爬取已加入群的成員信息

在這里插入圖片描述

代碼實(shí)現(xiàn)

# Author:smart_num_1
# Blog:https://blog.csdn.net/smart_num_1
# WeChat:Be_a_lucky_dog
def get_group_number(driver = None):
 group_number_dic = {}
 # 同樣的,利用字典儲(chǔ)存信息
 my_group_list = WebDriverWait(driver = driver,timeout = 100).until(EC.presence_of_all_elements_located((By.XPATH,'//ul[@class="my-group-list"]/li')))
 # 獲取每個(gè)已加入群的節(jié)點(diǎn)信息
 print('在以下群中選擇:')
 i = 1
 for my_group in my_group_list:
  try:
   group_number_dic[str(i)] = my_group
   print('第 %s 個(gè)--- '%str(i) + my_group.get_attribute('title') + ' ' + my_group.get_attribute('data-id'))
   i += 1
  except:
   continue
 # 打印出獲得的群信息,獲取所有的目標(biāo)群
 group = input('獲取群編號(hào) : ')
 # 通過鍵名獲取鍵值,得到要點(diǎn)擊的目標(biāo)
 group_number_dic[group].click()
 return driver
if __name__ == '__main__':
	member_url_test = 'https://qun.qq.com/member.html'
	driver.get(url = member_url_test)
 driver = get_group_number(driver=driver)

保存所需信息

頁(yè)面分析

可以看到,是個(gè)動(dòng)態(tài)加載的頁(yè)面,因?yàn)橛玫氖莝elenium,所以就沒必要分析到底是通過請(qǐng)求那個(gè)url得到的信息,直接模擬滾動(dòng)獲取就可以了

在這里插入圖片描述

代碼實(shí)現(xiàn)

# Author:smart_num_1
# Blog:https://blog.csdn.net/smart_num_1
# WeChat:Be_a_lucky_dog
def get_group_member(driver = None):
 driver.refresh()
 # 刷新一下界面,防止上一步點(diǎn)擊過后,頁(yè)面不更新的情況
 elem_end = WebDriverWait(driver = driver,timeout = 100).until(EC.presence_of_element_located((By.XPATH,'//td[@class="td-user-nick"]/img')))
 # 添加了等待,這個(gè)定位可以隨便的選擇,確保頁(yè)面加載完畢的
 for i in range(10):
  time.sleep(0.5)
  driver.execute_script("var action=document.documentElement.scrollTop=10000")
  print('加載中······')
 # 這個(gè)滾動(dòng)范圍可以任選,因?yàn)槊看螘?huì)加載21個(gè)信息,我看過我加的群,在10次過后的成員基本屬于潛水的人了,要不要的就無(wú)所謂了
 group_members = driver.find_elements_by_xpath('//tr[contains(@class,"mb")]')
 for group_member in group_members:
  try:
   data = group_member.text.split('\n')[2].split(' ')[0]
   # 這一步,得到一個(gè)列表,從第一位開始分別是成員、群昵稱、QQ號(hào)、性別、Q齡、入群時(shí)間、等級(jí)(積分)、最后發(fā)言,在這里我是只需要QQ號(hào)碼
   #對(duì)于其他信息,根據(jù)自己需要,添加代碼即可
   if data.isdigit() == True:
    with open('./record.txt','a',encoding = 'utf-8') as record:
     record.write(data + '@qq.com')
     record.write('\n')
  except:
   continue
 print('Loaded')

完整代碼

# Author:smart_num_1
# Blog:https://blog.csdn.net/smart_num_1
# WeChat:Be_a_lucky_dog
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.chrome.options import Options
import time
import random
import os
def get_group_member(driver = None):
 driver.refresh()
 elem_end = WebDriverWait(driver = driver,timeout = 100).until(EC.presence_of_element_located((By.XPATH,'//td[@class="td-user-nick"]/img')))
 for i in range(10):
  time.sleep(0.5)
  driver.execute_script("var action=document.documentElement.scrollTop=10000")
  print('加載中······')
 group_members = driver.find_elements_by_xpath('//tr[contains(@class,"mb")]')
 for group_member in group_members:
  try:
   data = group_member.text.split('\n')[2].split(' ')[0]
   if data.isdigit() == True:
    with open('./record.txt','a',encoding = 'utf-8') as record:
     record.write(data + '@qq.com')
     record.write('\n')
  except:
   continue
 print('Loaded')
def get_group_number(driver = None):
 group_number_dic = {}
 my_group_list = WebDriverWait(driver = driver,timeout = 100).until(EC.presence_of_all_elements_located((By.XPATH,'//ul[@class="my-group-list"]/li')))
 print('在以下群中選擇:')
 i = 1
 for my_group in my_group_list:
  try:
   group_number_dic[str(i)] = my_group
   print('第 %s 個(gè)--- '%str(i) + my_group.get_attribute('title') + ' ' + my_group.get_attribute('data-id'))
   i += 1
  except:
   continue
 group = input('獲取群編號(hào) : ')
 group_number_dic[group].click()
 return driver
def login(driver = None):
 already_dic = {}
 login_button = WebDriverWait(driver = driver,timeout = 100).until(EC.presence_of_element_located((By.XPATH,'//p[@class="user-info"]/a')))
 login_button.click()
 already_login_number = WebDriverWait(driver = driver,timeout = 100).until(EC.presence_of_element_located((By.XPATH,'//div[@id="loginWin"]/iframe')))
 driver.get(url = already_login_number.get_attribute('src'))
 already_login_numbers = WebDriverWait(driver = driver,timeout = 100).until(EC.presence_of_all_elements_located((By.XPATH,'//span[contains(@class,"nick")]')))
 print('在以下賬號(hào)中選擇所需賬號(hào)')
 for already_login_number in already_login_numbers:
  already_dic[already_login_number.get_attribute('innerText')] = already_login_number
  print(already_login_number.get_attribute('innerText'))
 QQ_NeedToLogin = input('需要登陸: ')
 already_dic[QQ_NeedToLogin].click()
 time.sleep(1)
def start(driver = None,url = None):
 print('Please wait for loading\n')
 driver.get(url = url)
 driver = get_group_number(driver=driver)
 print('Please wait for loading\n')
 get_group_member(driver=driver)
if __name__ == '__main__':
 print('Please wait for loading')
 chrome_options=Options()
 chrome_options.add_argument('--headless')
 try:
  random.seed(time.time())
  QQ_number = '738334209'
  start_url = 'https://qun.qq.com/index.html#click'
  member_url = 'https://qun.qq.com/member.html#gid=%s'%QQ_number
  member_url_test = 'https://qun.qq.com/member.html'
  driver = webdriver.Chrome(executable_path = './chromedriver.exe',chrome_options=chrome_options)
  try:
   driver.get(url=start_url)
   login(driver=driver)
   while True:
    start(driver = driver,url = member_url_test)
    flag = input('是否繼續(xù)爬取? yes or no : ')
    if flag == 'no':
     break
    os.system('cls')
   driver.quit()
  except:
   print('Something wrong')
   driver.quit()
 except:
  print('Something wrong!!!!!!')
  os.system('pause')

轉(zhuǎn)載請(qǐng)標(biāo)明出處:https://blog.csdn.net/smart_num_1/article/details/106326488

總結(jié)

到此這篇關(guān)于Python selenium 加載并保存QQ群成員 去除其群主、管理員信息的示例代碼的文章就介紹到這了,更多相關(guān)Python selenium 加載并保存QQ群成員內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python3.5仿微軟計(jì)算器程序

    python3.5仿微軟計(jì)算器程序

    這篇文章主要為大家詳細(xì)介紹了python3.5仿微軟計(jì)算器程序的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • python 實(shí)現(xiàn)非極大值抑制算法(Non-maximum suppression, NMS)

    python 實(shí)現(xiàn)非極大值抑制算法(Non-maximum suppression, NMS)

    這篇文章主要介紹了python 如何實(shí)現(xiàn)非極大值抑制算法(Non-maximum suppression, NMS),幫助大家更好的進(jìn)行機(jī)器學(xué)習(xí),感興趣的朋友可以了解下
    2020-10-10
  • Python如何使用input函數(shù)獲取輸入

    Python如何使用input函數(shù)獲取輸入

    這篇文章主要介紹了Python如何使用input函數(shù)獲取輸入,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Restful_framework視圖組件代碼實(shí)例解析

    Restful_framework視圖組件代碼實(shí)例解析

    這篇文章主要介紹了Restful_framework視圖組件代碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Python函數(shù)和模塊的使用總結(jié)

    Python函數(shù)和模塊的使用總結(jié)

    在本文中小編給大家整理了關(guān)于Python函數(shù)和模塊的使用的相關(guān)知識(shí)點(diǎn)以及實(shí)例代碼內(nèi)容,需要的朋友們跟著學(xué)習(xí)下。
    2019-05-05
  • Python中的 sort 和 sorted的用法與區(qū)別

    Python中的 sort 和 sorted的用法與區(qū)別

    這篇文章主要介紹了Python中的 sort 和 sorted的用法與區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 基于python使MUI登錄頁(yè)面的美化

    基于python使MUI登錄頁(yè)面的美化

    之前的文章Python用HBuilder創(chuàng)建交流社區(qū)APP我們已經(jīng)在HBuilder上創(chuàng)建的APP ,現(xiàn)HBuilder中已經(jīng)有了登錄頁(yè)面的相關(guān)的html文件,但是按照html已有的頁(yè)面來看,它缺少外觀的美化,本篇文章主要講的是MUI登錄頁(yè)面的美化。,需要的朋友可以參考一下
    2021-11-11
  • Python中的字典遍歷備忘

    Python中的字典遍歷備忘

    這篇文章主要介紹了Python中的字典遍歷備忘,本文列舉了多種字典遍歷方法,適合初學(xué)者查看,并簡(jiǎn)單講解了interitems和iterms區(qū)別,需要的朋友可以參考下
    2015-01-01
  • 解決Pycharm 中遇到Unresolved reference ''sklearn''的問題

    解決Pycharm 中遇到Unresolved reference ''sklearn''的問題

    這篇文章主要介紹了解決Pycharm 中遇到Unresolved reference 'sklearn'的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 結(jié)合OpenCV與TensorFlow進(jìn)行人臉識(shí)別的實(shí)現(xiàn)

    結(jié)合OpenCV與TensorFlow進(jìn)行人臉識(shí)別的實(shí)現(xiàn)

    這篇文章主要介紹了結(jié)合OpenCV與TensorFlow進(jìn)行人臉識(shí)別的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評(píng)論