使用python调用浏览器实现自动转发微博
生活随笔
收集整理的這篇文章主要介紹了
使用python调用浏览器实现自动转发微博
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?
使用python調(diào)用瀏覽器實現(xiàn)自動轉(zhuǎn)發(fā)微博
視頻講解地址:??https://www.bilibili.com/video/BV1i7411B747/
# coding = utf-8 import datetime from time import sleepfrom selenium import webdriver from selenium.webdriver.chrome.options import Options # from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys import Keys# import weibo2def isElement(browser, xpathElement):try:browser.find_element_by_xpath(xpathElement)return Trueexcept:return Falseif __name__ == "__main__":# loginName = weibo2.loginName #登錄微博的賬戶# loginPassword = weibo2.loginPassword # 登錄微博的密碼# print(loginName,loginPassword)loginName = '你自己的登錄賬戶'loginPassword = '密碼'successful_num = 0 # 記錄轉(zhuǎn)發(fā)微博成功的次數(shù)now_time = datetime.datetime.now()# 登錄微博# chrome_options = Options()# chrome_options.add_argument('--headless')# chrome_options.add_argument('--disable-gpu') # 前面三行是保證是無界面啟動瀏覽器# browser = webdriver.Chrome(chrome_options=chrome_options) # 創(chuàng)建一個谷歌瀏覽器對象browser = webdriver.Chrome() # 創(chuàng)建一個谷歌瀏覽器對象browser.get("https://passport.weibo.cn/signin/login") # 打開網(wǎng)址sleep(3)print("已經(jīng)打開網(wǎng)址,等待3秒")browser.find_element_by_id('loginName').click()browser.find_element_by_id('loginName').send_keys(loginName) # 點擊賬戶輸入框輸入賬戶print("進行賬戶輸入")browser.find_element_by_id('loginPassword').click()browser.find_element_by_id('loginPassword').send_keys(loginPassword) # 點擊密碼輸入框,輸入密碼print("進行密碼輸入")browser.find_element_by_id('loginAction').click() # 點擊登錄按鈕print("進行登錄點擊操作")sleep(0.5)while True:try:browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div[1]').click() # 點擊頭像獲取信息print('點擊頭像,獲取微博數(shù)、關(guān)注數(shù)、粉絲數(shù)')breakexcept:sleep(0.5)sleep(0.5)while True:try:weibo_num = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[1]/i').textguanzhu_num = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[2]/i').textfensi_num = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[3]/i').textprint('微博數(shù):', weibo_num, '關(guān)注數(shù):', guanzhu_num, '粉絲數(shù):', fensi_num)break # 跳出循環(huán)except:sleep(0.5)browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div[1]/i').click() # 點擊返回# 獲取微博熱搜browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/a/aside/label/div').click() # 點擊搜索輸入框print("點擊搜索的輸入框")while True:try:browser.find_element_by_xpath('//*[@id="app"]/div[1]/div[1]/div[2]/div/div/div[8]/div').click() # 點擊微博熱搜,查看所有的微博熱搜print("點擊微博熱搜")breakexcept:sleep(0.5)sleep(8)xpath1 = browser.find_elements_by_xpath('/html/body/div/div[1]/div[1]/div/div/div/div/div/div/div/div/span[2]/span[1]') # 獲取熱搜信息# /html/body/div/div[1]/div[1]/div[2]/div/div/div/div/div/div/div/span[2]/span[1]# /html/body/div/div[1]/div[1]/div[2]/div/div/div/div/div/div/div/span[2]/span[1]hot_text = []for j in xpath1: # 需要研究使用枚舉型進行循環(huán)輸出,將標(biāo)題信息依次打印輸出hot_text.append(j.text)print(hot_text)# 返回可以進行搜索的界面browser.find_element_by_xpath('//*[@id="app"]/div[1]/div[1]/div[1]/div/div/div/a').click() # 進行點擊返回操作,返回到可以點擊微博熱搜的界面# browser.find_element_by_xpath(# '//*[@id="app"]/div[1]/div[1]/div[1]/div/div/div[1]').click() # 進行點擊返回操作,返回到登錄后顯示的界面# browser.find_element_by_xpath(# ' //*[@id="app"]/div[1]/div[1]/div[1]/div/div/div[2]/form/input').click() # 點擊搜索的輸入框zhuanfa_xpath_list = ['/html/body/div/div[1]/div[1]/div[3]/div/div/div[1]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[3]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[4]/div/div/div[1]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[4]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[5]/div/div/div[1]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[5]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[6]/div/div/div[1]/div/div/footer/div[1]','/html/body/div/div[1]/div[1]/div[6]/div/div/footer/div[1]']# 開始針對每一個熱搜話題,進行搜索for every_hot in hot_text:browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div/div/div[2]/form/input').clear() # 清空進行搜索的輸入框browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div/div/div[2]/form/input').send_keys(every_hot) # 輸入搜索的內(nèi)容browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div/div/div[2]/form/input').send_keys(Keys.ENTER) # 模擬鍵盤回車進行搜索sleep(5)for i in range(len(zhuanfa_xpath_list)): # 完成進行轉(zhuǎn)發(fā)的功能try:browser.find_element_by_xpath(zhuanfa_xpath_list[i]).click() # 點擊第一篇文章的轉(zhuǎn)發(fā)sleep(3)browser.find_element_by_xpath('//*[@id="app"]/div[1]/div/header/div[3]/a').click() # 點擊第一篇文章的發(fā)送sleep(2)isXpathElement = u'/html/body/div/div[2]/div[1]/div[2]/footer/div/a'truenFalse = isElement(browser, isXpathElement) # 調(diào)用方法if truenFalse is False:successful_num += 1print(every_hot+'\t第' + str(i+1) + '次轉(zhuǎn)發(fā)成功')sleep(3)else : # 執(zhí)行過程中出現(xiàn)彈窗等意外情況,轉(zhuǎn)發(fā)失敗print('執(zhí)行過程中出現(xiàn)彈窗等意外情況,轉(zhuǎn)發(fā)失敗')breakexcept:if isElement(browser,'/html/body/div/div[2]/div[1]/div[2]/header/h3') is True :print('轉(zhuǎn)發(fā)失敗,點擊確定按鈕,并返回')browser.find_element_by_xpath('/html/body/div/div[2]/div[1]/div[2]/footer/div/a').click() # 點擊確定按鈕browser.find_element_by_xpath('/html/body/div/div[1]/div/header/div[1]/i').click() # 點擊返回按鈕break# print(every_hot+'\t第' + str(i+1) + '次轉(zhuǎn)發(fā)失敗')# pinglun_neirong = '歡迎關(guān)注我,看實時熱點,,現(xiàn)在我們關(guān)注: ' + every_hot# browser.find_element_by_xpath(# '/html/body/div/div[1]/div/main/div[1]/div/span/textarea[1]').send_keys(pinglun_neirong)sleep(5)browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div/div/div[1]/i').click() # 點擊進行返回while True:try:browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[1]/div[1]').click() # 點擊頭像獲取信息print('點擊頭像,獲取微博數(shù)、關(guān)注數(shù)、粉絲數(shù)')breakexcept:sleep(1)while True:try:weibo_num2 = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[1]/i').textguanzhu_num2 = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[2]/i').textfensi_num2 = browser.find_element_by_xpath('/html/body/div/div[1]/div[1]/div[3]/div[1]/span[3]/i').textprint('微博數(shù):', weibo_num, '關(guān)注數(shù):', guanzhu_num, '粉絲數(shù):', fensi_num)break # 跳出循環(huán)except:sleep(1)print("轉(zhuǎn)發(fā)任務(wù)完成")print('開始時間', now_time)print('結(jié)束時間', datetime.datetime.now())print('這次共轉(zhuǎn)發(fā)微博' + str(successful_num) + '次')print('執(zhí)行轉(zhuǎn)發(fā)任務(wù)前 微博數(shù):', weibo_num, '關(guān)注數(shù):', guanzhu_num, '粉絲數(shù):', fensi_num)print('執(zhí)行轉(zhuǎn)發(fā)任務(wù)后 微博數(shù):', weibo_num2, '關(guān)注數(shù):',guanzhu_num2, '粉絲數(shù):', fensi_num2)sleep(100)browser.quit() # 關(guān)閉所有窗口?
?
?
總結(jié)
以上是生活随笔為你收集整理的使用python调用浏览器实现自动转发微博的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 产品经理书籍推荐
- 下一篇: 计算机cs怎么使用技巧,cs1.6如何添