python使用selenium模擬瀏覽器進(jìn)入好友QQ空間留言功能
首先下載selenium模塊,pip install selenium,下載一個瀏覽器驅(qū)動程序(我這里使用谷歌)。
#導(dǎo)入
#注意python各版本find_element()方法的變化(python3.10)
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# 創(chuàng)建一個模擬瀏覽器對象,然后通過對象去操作瀏覽器s=Service("chromedriver.exe")browser=webdriver.Chrome(service=s)QQ空間默認(rèn)登錄是使用二維碼登錄,我們要使用賬號密碼登錄注意QQ空間登錄框在一個iframe標(biāo)簽里:定位該框架

browser.get('https://qzone.qq.com/')
browser.maximize_window()time.sleep(2)
browser.switch_to.frame('login_frame')
a_tag = browser.find_element(By.ID,"switcher_plogin")
a_tag.click()接下來就是輸入賬號,密碼,點(diǎn)擊登錄
userName_tag = browser.find_element(By.ID,'u')
password_tag =browser.find_element(By.ID,'p')
time.sleep(1)
userName_tag.send_keys('這里是QQ號')
time.sleep(1)
password_tag.send_keys('這里是密碼')
time.sleep(1)
btn = browser.find_element(By.ID,'login_button')
btn.click()目前實(shí)現(xiàn)的效果圖

接下來實(shí)現(xiàn)的是,進(jìn)入上邊導(dǎo)航欄的好友頁面,并定位好友搜索框,向搜索框傳遞要搜索的好友

:部分iframe沒有id或name,用xpath定位
browser.switch_to.default_content() # 登陸完后回到默認(rèn)框架 time.sleep(1) browser.find_element(By.XPATH,'//*[@id="aMyFriends"]').click() time.sleep(1) element1 =browser.find_element(By.XPATH,'//[@id="app_container"]/iframe') browser.switch_to.frame(element1) ff=browser.find_element(By.XPATH,'//*[@id="qz-search-box-input"]') ff.send_keys(friend) time.sleep(1) browser.switch_to.default_content() element2=browser.find_element(By.XPATH,'//[@id="app_container"]/iframe') browser.switch_to.frame(element2) browser.find_element(By.XPATH,'//*[@id="qz-search-box-result"]/li/div[2]/p').click() time.sleep(1) browser.find_element(By.XPATH,'//[@id="mecarewho_list"]/li/div[2]/div[2]/p/a').click()time.sleep(1) #進(jìn)入好友的頁面
實(shí)現(xiàn)效果:

接下來就是進(jìn)入好友留言板進(jìn)行留言
注意的是留言框和發(fā)表按鈕在不同的frame,發(fā)表在外面的一層,仔細(xì)查看
windows = browser.window_handles
browser.switch_to.window(windows[-1])
time.sleep(1)
browser.find_element(By.XPATH,'//*[@id="friendship_promote_layer"]/table/tbody/tr[1]/td[2]/a').click()
time.sleep(1)
#browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.find_element(By.XPATH,'//*[@id="menuContainer"]/div/ul/li[4]').click()#或者 browser.find_element(By.XPATH,"http://div[@id='layBackground']//li[@class = 'menu_item_334']//a[text()='留言板']").click()
time.sleep(3)#進(jìn)入留言板
browser.switch_to.frame('tgb')
time.sleep(1)
browser.switch_to.frame('veditor1_Iframe')
time.sleep(1)
ff=browser.find_element(By.XPATH,'/html/body')#留言框
ff.send_keys(word)
browser.switch_to.default_content()
browser.switch_to.frame('tgb')
dd=browser.find_element(By.XPATH,'//*[@id="btnPostMsg"]')
dd.click()#確認(rèn)發(fā)表按鈕
print("留言成功?。?!")
time.sleep(2)
browser.quit()
python小白,有錯誤的的地方還請多多指教
完整代碼如下:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
from selenium.webdriver import ActionChains
from selenium.webdriver import ChromeOptions
# 請輸入好友和留言內(nèi)容
qq=input('輸入自己的QQ號:')
friend = input('請輸入好友:')
word = input('請輸入留言內(nèi)容:')
# 創(chuàng)建一個模擬瀏覽器對象,然后通過對象去操作瀏覽器
option=ChromeOptions()
option.add_argument('--headless')
option.add_argument('--disable-gpu')
s=Service("chromedriver.exe")
browser = webdriver.Chrome(service=s,options=option)
browser.get('https://qzone.qq.com/')
browser.maximize_window()
time.sleep(2)
browser.switch_to.frame('login_frame')
a_tag = browser.find_element(By.ID,"switcher_plogin")
a_tag.click()
userName_tag = browser.find_element(By.ID,'u')
password_tag =browser.find_element(By.ID,'p')
time.sleep(1)
userName_tag.send_keys(qq)
time.sleep(1)
password_tag.send_keys('此處輸入自己的密碼')
time.sleep(1)
btn = browser.find_element(By.ID,'login_button')
btn.click()
browser.switch_to.default_content() # 登陸完后回到默認(rèn)框架
time.sleep(1)
browser.find_element(By.XPATH,'//*[@id="aMyFriends"]').click()
time.sleep(1)
element1 =browser.find_element(By.XPATH,'//*[@id="app_container"]/iframe')
browser.switch_to.frame(element1)
ff=browser.find_element(By.XPATH,'//*[@id="qz-search-box-input"]')
ff.send_keys(friend)
time.sleep(1)
browser.switch_to.default_content()
element2 =browser.find_element(By.XPATH,'//*[@id="app_container"]/iframe')
browser.switch_to.frame(element2)
browser.find_element(By.XPATH,'//*[@id="qz-search-box-result"]/li/div[2]/p').click()#難點(diǎn)
time.sleep(1)#搜索ok
browser.find_element(By.XPATH,'//*[@id="mecarewho_list"]/li/div[2]/div[2]/p/a').click()
time.sleep(1)#進(jìn)入好友
# 獲得打開的第一個窗口句柄
windows = browser.window_handles
browser.switch_to.window(windows[-1])
time.sleep(1)
browser.find_element(By.XPATH,'//*[@id="friendship_promote_layer"]/table/tbody/tr[1]/td[2]/a').click()
time.sleep(1)
#browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.find_element(By.XPATH,'//*[@id="menuContainer"]/div/ul/li[4]').click()#或者 browser.find_element(By.XPATH,"http://div[@id='layBackground']//li[@class = 'menu_item_334']//a[text()='留言板']").click()
time.sleep(3)#進(jìn)入留言板
browser.switch_to.frame('tgb')
time.sleep(1)
browser.switch_to.frame('veditor1_Iframe')
time.sleep(1)
ff=browser.find_element(By.XPATH,'/html/body')#留言框
ff.send_keys(word)
browser.switch_to.default_content()
browser.switch_to.frame('tgb')
dd=browser.find_element(By.XPATH,'//*[@id="btnPostMsg"]')
dd.click()#確認(rèn)發(fā)表按鈕
print("留言成功!!!")
time.sleep(2)
browser.quit()到此這篇關(guān)于python使用selenium模擬瀏覽器進(jìn)入好友QQ空間留言的文章就介紹到這了,更多相關(guān)python模擬瀏覽器selenium內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python np.arange 步長0.1的問題需要特別注意
這篇文章主要介紹了python np.arange 步長0.1的問題需要特別注意,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
Python一句代碼實(shí)現(xiàn)找出所有水仙花數(shù)的方法
今天小編就為大家分享一篇Python一句代碼實(shí)現(xiàn)找出所有水仙花數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11
Python 中的Selenium異常處理實(shí)例代碼
本文通過實(shí)例代碼給大家介紹了Python 中的Selenium異常處理的相關(guān)知識,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2018-05-05
pandas pd.cut()與pd.qcut()的具體實(shí)現(xiàn)
本文主要介紹了pandas pd.cut()與pd.qcut()的具體實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
如何使用python的pillow庫生成圖像驗(yàn)證碼
Pillow庫是一個強(qiáng)大的Python圖像處理庫,用于生成圖像驗(yàn)證碼,通過初始化圖像大小、驗(yàn)證碼字符長度和字體大小,生成隨機(jī)字符串、顏色、線和點(diǎn),最終生成驗(yàn)證碼圖像2025-01-01

