Selenium實現微博自動化運營之關注、點贊、評論功能
阿新 • • 發佈:2020-02-17
Selenium 是什麼?
Selenium是一個用於Web應用程式測試的工具,可以模擬真正的使用者操作,支援多種瀏覽器,如Firefox,Safari,Google Chrome,Opera等。
Selenium 模擬的就是一個真實的使用者的操作行為,我們完全不用擔心 cookie 追蹤和隱藏欄位的干擾。
除了Selenium 外,還有Puppeteer 工具可以模擬使用者操作,Python + Selenium + 第三方瀏覽器可以讓我們處理多種複雜場景,包括網頁動態載入、JS 響應、Post 表單等。
正好,我們公司有一個妹紙團隊運營的微博粉絲挺多,叫中公題庫君,我們使用Selenium實現微博自動關注她,順便點贊和評論一下
相關幫助連結
- 官網地址
- 查詢元素
- 等待指定狀態
- 所有動作
- action瀏覽器api
一、核心程式碼
talking is cheap,話不多說,上程式碼!
from selenium import webdriver import time # 注意這裡使用了我本機的谷歌瀏覽器驅動 browser = webdriver.Chrome(executable_path='/Users/chenqionghe/.wdm/drivers/chromedriver/79.0.3945.36/mac64/chromedriver') # 設定使用者名稱、密碼 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') # 加關注 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) # 這時候我們就關注成功了,好,接下來,我們給題庫君點贊和評論一下 # 找到第二條微博,因為第一條微博都是置頂的 second_weibo=browser.find_element_by_xpath("//div[@class='card m-panel card9 weibo-member card-vip'][2]") second_weibo.text js = "arguments[0].scrollIntoView();" # 將下拉滑動條滑動到當前div區域 browser.execute_script(js,second_weibo) # 給第二條微博點贊 selector="//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="//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() # 輸出評論內容 wishes="I'm super saiyan,best wishes to you !" if text=='評論': # 游標定位到發表評論處 comment=browser.find_element_by_tag_name('textarea') comment.click() # 輸入評論內容 comment.send_keys(wishes) time.sleep(1) # 定位傳送按鈕 sendBtn=browser.find_element_by_class_name('m-send-btn') else: # 游標定位到發表評論處 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() # 輸入評論內容 comment.send_keys(wishes) # 定位傳送按鈕 sendBtn=browser.find_element_by_class_name('btn-send') # 發表評論 sendBtn.click()
二、步驟分解
1.開啟瀏覽器
from selenium import webdriver import time # 注意這裡使用了我本機的谷歌瀏覽器驅動 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)
可以看到,已經打開了頁面
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.加一下關注
#加關注 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()
關注成功後,讓選擇分組,這裡我直接找到取消按鈕點選了一下
這時候我們就關注成功了,好,接下來,我們找到題庫君非置頂的第一條微博評論一下
8.定位到第2條微博
因為第1條一般是置頂的,定位到第2條微博頁面處
# 找到第二條微博,因為第一條微博都是置頂的 second_weibo=browser.find_element_by_xpath("//div[@class='card m-panel card9 weibo-member card-vip'][2]") second_weibo.text js = "arguments[0].scrollIntoView();" # 將下拉滑動條滑動到當前div區域 browser.execute_script(js,second_weibo)
9.開始點贊
# 給第二條微博點贊 selector="//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="//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()
這裡的邏輯是,點選了,如果還沒有人評論,評論框顯示的文字叫<評論>,如果已經有人評論了會顯示評論數量
# 輸入評論內容 wishes="I'm super saiyan,best wishes to you !" if text=='評論': # 游標定位到發表評論處 comment=browser.find_element_by_tag_name('textarea') comment.click() # 輸入評論內容 comment.send_keys(wishes) time.sleep(1) # 定位傳送按鈕 sendBtn=browser.find_element_by_class_name('m-send-btn') else: # 游標定位到發表評論處 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() # 輸入評論內容 comment.send_keys(wishes) # 定位傳送按鈕 sendBtn=browser.find_element_by_class_name('btn-send') # 發表評論 sendBtn.click()
哈哈,看到已經評論成功了,到此,通過Selenium實現了微博自動化:關注、點贊、評論,感覺還挺好玩的~
總結
以上所述是小編給大家介紹的Selenium實現微博自動化運營之關注、點贊、評論功能,希望對大家有所幫助!