Selenium實現微博自動化運營:關注、點贊、評論


Selenium 是什么?

Selenium是一個用於Web應用程序測試的工具,可以模擬真正的用戶操作,支持多種瀏覽器,如Firefox,Safari,Google Chrome,Opera等。
Selenium 模擬的就是一個真實的用戶的操作行為,我們完全不用擔心 cookie 追蹤和隱藏字段的干擾。

正好,我們公司有一個妹紙團隊運營的微博粉絲挺多,叫中公題庫君,我們使用Selenium實現微博自動關注她,順便點贊和評論一下

相關幫助鏈接

一、核心代碼

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'][3]")
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
    用於 Web 測試的工具,支持多種瀏覽器和自動化測試
  • Puppeteer
    一個Nodejs的庫,支持調用Chrome的API來操縱Web,能進行無頭瀏覽模。
    相比較Selenium或是PhantomJs,它最大的特點就是它的操作Dom可以完全在內存中進行模擬既在V8引擎中處理而不打開瀏覽器,而且關鍵是這個是Chrome團隊在維護,會擁有更好的兼容性和前景。
  • PhantomJS
    基於webkit的JavaScript API。它使用QtWebKit作為它核心瀏覽器的功能,使用webkit來編譯解釋執行JavaScript代碼。任何你可以在基於webkit瀏覽器做的事情,它都能做到,可以實現諸如網絡監測、網頁截屏、無需瀏覽器的 Web 測試、頁面訪問自動化等。
  • lxml
    python的一個解析庫,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高
  • Scrapy
    Python開發的爬蟲框架,功能強大,可以用於數據挖掘、監測和自動化測試。
    Scrapy就像爬蟲界的AK47,做某些大批量數據采集時簡單易用,而requests就像瑞士軍刀,經過專業訓練的高手用它來殺敵於無形。
    小的項目或者深度定制建議使用requests,大的項目,並發量大的建議使用scrapy


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM