Selenium 是什么?
Selenium是一個用于Web應用程序測試的工具,可以模擬真正的用戶操作,支持多種瀏覽器,如Firefox,Safari,Google Chrome,Opera等。
Selenium 模擬的就是一個真實的用戶的操作行為,我們完全不用擔心 cookie 追蹤和隱藏字段的干擾。
除了Selenium 外,還有Puppeteer 工具可以模擬用戶操作,Python + Selenium + 第三方瀏覽器可以讓我們處理多種復雜場景,包括網(wǎng)頁動態(tài)加載、JS 響應、Post 表單等。
正好,我們公司有一個妹紙團隊運營的微博粉絲挺多,叫中公題庫君,我們使用Selenium實現(xiàn)微博自動關(guān)注她,順便點贊和評論一下
相關(guān)幫助鏈接
- 官網(wǎng)地址
- 查找元素
- 等待指定狀態(tài)
- 所有動作
- action瀏覽器api
一、核心代碼
talking is cheap,話不多說,上代碼!
from selenium import webdriver
import time
# 注意這里使用了我本機的谷歌瀏覽器驅(qū)動
browser = webdriver.Chrome(executable_path='/Users/chenqionghe/.wdm/drivers/chromedriver/79.0.3945.36/mac64/chromedriver')
# 設(shè)置用戶名、密碼
username = "你的用戶名"
password = "你的密碼"
# 打開微博登錄頁
browser.get('https://passport.weibo.cn/signin/login')
browser.implicitly_wait(5)
time.sleep(1)
# 填寫登錄信息:用戶名、密碼
browser.find_element_by_id("loginName").send_keys(username)
browser.find_element_by_id("loginPassword").send_keys(password)
time.sleep(1)
# 點擊登錄
browser.find_element_by_id("loginAction").click()
time.sleep(1)
# 通過人機驗證,找到那個小點點擊一下
browser.find_element_by_class_name("geetest_radar_tip").click()
# 打開我們的中公題庫君的首頁
browser.get('https://m.weibo.cn/u/5430882137')
# 加關(guān)注
follow_button = browser.find_element_by_xpath('//div[@class="m-add-box m-followBtn"]')
follow_button.click()
time.sleep(1)
# 這時候彈出了選擇分組的框,定位取消按鈕
group_button = browser.find_element_by_xpath('//a[@class="m-btn m-btn-white m-btn-text-black"]')
group_button.click()
time.sleep(1)
# 這時候我們就關(guān)注成功了,好,接下來,我們給題庫君點贊和評論一下
# 找到第二條微博,因為第一條微博都是置頂?shù)?
second_weibo=browser.find_element_by_xpath("http://div[@class='card m-panel card9 weibo-member card-vip'][2]")
second_weibo.text
js = "arguments[0].scrollIntoView();"
# 將下拉滑動條滑動到當前div區(qū)域
browser.execute_script(js, second_weibo)
# 給第二條微博點贊
selector="http://div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][3]"
a=browser.find_element_by_xpath(selector)
a.click()
# 定位第二條微博的評論處,點擊
selector="http://div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][2]"
a=browser.find_element_by_xpath(selector)
text=a.text
a.click()
# 輸出評論內(nèi)容
wishes="I'm super saiyan, best wishes to you !"
if text=='評論':
# 光標定位到發(fā)表評論處
comment=browser.find_element_by_tag_name('textarea')
comment.click()
# 輸入評論內(nèi)容
comment.send_keys(wishes)
time.sleep(1)
# 定位發(fā)送按鈕
sendBtn=browser.find_element_by_class_name('m-send-btn')
else:
# 光標定位到發(fā)表評論處
focus=browser.find_element_by_css_selector('span[class="m-box-center-a main-text m-text-cut focus"]')
focus.click()
# 點擊評論
comment=browser.find_element_by_tag_name('textarea')
comment.click()
# 輸入評論內(nèi)容
comment.send_keys(wishes)
# 定位發(fā)送按鈕
sendBtn=browser.find_element_by_class_name('btn-send')
# 發(fā)表評論
sendBtn.click()
二、步驟分解
1.打開瀏覽器
from selenium import webdriver
import time
# 注意這里使用了我本機的谷歌瀏覽器驅(qū)動
browser = webdriver.Chrome(executable_path='/Users/chenqionghe/.wdm/drivers/chromedriver/79.0.3945.36/mac64/chromedriver')
2.訪問微博登錄頁
# 打開微博登錄頁
browser.get('https://passport.weibo.cn/signin/login')
browser.implicitly_wait(5)
可以看到,已經(jīng)打開了頁面
3.輸入賬號密碼
# 填寫登錄信息:用戶名、密碼
username = "你的用戶名"
password = "你的密碼"
browser.find_element_by_id("loginName").send_keys(username)
browser.find_element_by_id("loginPassword").send_keys(password)
time.sleep(1)
4.點擊登錄
# 點擊登錄
browser.find_element_by_id("loginAction").click()
5.通過人機驗證
找到那個小點點擊一下
browser.find_element_by_class_name("geetest_radar_tip").click()
登錄成功,如下所示
6.訪問我們的中公題庫君首頁
browser.get('https://m.weibo.cn/u/5430882137')
7.加一下關(guān)注
#加關(guān)注
follow_button = browser.find_element_by_xpath('//div[@class="m-add-box m-followBtn"]')
follow_button.click()
time.sleep(1)
# 這時候彈出了選擇分組的框,定位取消按鈕
group_button = browser.find_element_by_xpath('//a[@class="m-btn m-btn-white m-btn-text-black"]')
group_button.click()
關(guān)注成功后,讓選擇分組,這里我直接找到取消按鈕點擊了一下
這時候我們就關(guān)注成功了,好,接下來,我們找到題庫君非置頂?shù)牡谝粭l微博評論一下
8.定位到第2條微博
因為第1條一般是置頂?shù)模ㄎ坏降?條微博頁面處
# 找到第二條微博,因為第一條微博都是置頂?shù)?
second_weibo=browser.find_element_by_xpath("http://div[@class='card m-panel card9 weibo-member card-vip'][2]")
second_weibo.text
js = "arguments[0].scrollIntoView();"
# 將下拉滑動條滑動到當前div區(qū)域
browser.execute_script(js, second_weibo)
9.開始點贊
# 給第二條微博點贊
selector="http://div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][2]"
a=browser.find_element_by_xpath(selector)
a.click()
可以看到,點贊成功了
10.點擊評論
#定位第二條微博的評論處
selector="http://div[@class='card m-panel card9 weibo-member card-vip'][2]//footer/div[@class='m-diy-btn m-box-col m-box-center m-box-center-a'][2]"
a=browser.find_element_by_xpath(selector)
text=a.text
a.click()
這里的邏輯是,點擊了,如果還沒有人評論,評論框顯示的文字叫評論>,如果已經(jīng)有人評論了會顯示評論數(shù)量
# 輸入評論內(nèi)容
wishes="I'm super saiyan, best wishes to you !"
if text=='評論':
# 光標定位到發(fā)表評論處
comment=browser.find_element_by_tag_name('textarea')
comment.click()
# 輸入評論內(nèi)容
comment.send_keys(wishes)
time.sleep(1)
# 定位發(fā)送按鈕
sendBtn=browser.find_element_by_class_name('m-send-btn')
else:
# 光標定位到發(fā)表評論處
focus=browser.find_element_by_css_selector('span[class="m-box-center-a main-text m-text-cut focus"]')
focus.click()
# 點擊評論
comment=browser.find_element_by_tag_name('textarea')
comment.click()
# 輸入評論內(nèi)容
comment.send_keys(wishes)
# 定位發(fā)送按鈕
sendBtn=browser.find_element_by_class_name('btn-send')
# 發(fā)表評論
sendBtn.click()
哈哈,看到已經(jīng)評論成功了,到此,通過Selenium實現(xiàn)了微博自動化:關(guān)注、點贊、評論,感覺還挺好玩的~
總結(jié)
以上所述是小編給大家介紹的Selenium實現(xiàn)微博自動化運營之關(guān)注、點贊、評論功能,希望對大家有所幫助!
您可能感興趣的文章:- 使用Selenium破解新浪微博的四宮格驗證碼
- Python selenium抓取微博內(nèi)容的示例代碼
- Python selenium實現(xiàn)微博自動登錄的示例代碼