溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python+selenium百度貼吧自動(dòng)簽到

發(fā)布時(shí)間:2020-07-16 11:23:51 來(lái)源:網(wǎng)絡(luò) 閱讀:866 作者:梁十八 欄目:編程語(yǔ)言
#-*- coding:utf-8 -*-
from selenium import webdriver
import time
import os
import random
from selenium.webdriver.common.action_chains import ActionChains

browser = webdriver.Chrome()

# 最大等待加載完的時(shí)間
max_loading = 600
# 延時(shí)隨機(jī)n秒執(zhí)行
wait_time = random.randint(3, 6)

"""
注意:要將原來(lái)打開(kāi)的谷歌瀏覽器關(guān)閉干凈
"""

# 默認(rèn)情況下selenium打開(kāi)的是新的chrome,不會(huì)使用原有的cookie,如果想不要每次都輸入賬號(hào)、密碼、驗(yàn)證碼,就做相關(guān)設(shè)置
profile_dir = 'C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data'
chrome_options = webdriver.ChromeOptions()
# 增加該設(shè)置,防止chrome出現(xiàn):chrome正受到自動(dòng)測(cè)試軟件的控制。使得不能繼續(xù)訪問(wèn)
chrome_options.add_argument('disable-infobars')
chrome_options.add_argument("user-data-dir=" + os.path.abspath(profile_dir))
# 不加載圖片 1.加載,2.不加載
prefs = {"profile.managed_default_content_settings.images": 1}
chrome_options.add_experimental_option("prefs", prefs)

browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get("https://tieba.baidu.com/")
# browser.maximize_window()
# js = "window.open('http://www.wlzhys.com')"
# browser.execute_script(js)
# browser.quit()
# browser.close()

# # 獲取更多吧中的元素的高度
# browser.execute_script("var eleDiv = document.getElementById('likeforumwraper');alert(eleDiv.innerHTML)")

# 移動(dòng)鼠標(biāo)到"查看更多"元素上
checkMore = browser.find_element_by_xpath('//*[@id="moreforum"]/a')
ActionChains(browser).move_to_element(checkMore).perform()

# 獲取更多吧中的元素的高度
# browser.execute_script("var eleDiv = document.getElementsByClassName('j_panel_content');alert(eleDiv.innerHTML)")


# time.sleep(wait_time)

# 獲取那8個(gè)顯示出來(lái)的吧的鏈接元素
tags = browser.find_elements_by_class_name('u-f-item')

# 遍歷它們
for tag in tags:
    # 獲取元素的高度
    # print(tag.size['height'])
    # exit()
    # tagHref = tag.get_attribute("href")
    # print(tagHref)
    tag.click()
    # 直到加載完,最多等待10秒鐘
    browser.implicitly_wait(10)
    # 獲取所有窗口
    windows = browser.window_handles
    # 切換到第二個(gè)窗口
    browser.switch_to.window(windows[-1])
    # 點(diǎn)擊簽到
    sign_button = browser.find_element_by_xpath('//*[@id="signstar_wrapper"]/a')
    # 防止點(diǎn)一次還不夠,要點(diǎn)兩次的情況
    # 直到加載完,最多等待10秒鐘
    browser.implicitly_wait(max_loading)
    time.sleep(wait_time)
    sign_button.click()
    sign_button.click()
    # time.sleep(wait_time)
    # 關(guān)閉當(dāng)前窗口
    browser.close()
    # 切換回最初的窗口
    browser.switch_to.window(windows[0])
    # time.sleep(wait_time)

# 移動(dòng)鼠標(biāo)到"查看更多"元素上
checkMore = browser.find_element_by_xpath('//*[@id="moreforum"]/a')
ActionChains(browser).move_to_element(checkMore).perform()

# js獲取元素
js = '''//獲取目標(biāo)元素
var EleId = document.getElementById('forumscontainer');
var targetEle = EleId.firstElementChild.firstElementChild
//下拉滾動(dòng)50像素
targetEle.scrollTop='''

# 獲取查看更多里的吧的標(biāo)簽,遍歷簽到
moreTags = browser.find_elements_by_xpath('//*[@id="forumscontainer"]/div/div[1]/a')
# print(len(moreTags))
# exit()
# 每點(diǎn)完6個(gè),上拉一定距離(防止按鈕沒(méi)出現(xiàn),點(diǎn)不到的情況)
i = 0
for moreTag in moreTags:
    # 獲取元素高度
    # print(moreTag.size)
    i = i + 1
    moreTag.click()
    # 直到加載完,最多等待10秒鐘
    browser.implicitly_wait(max_loading)
    # 獲取所有窗口
    windows = browser.window_handles
    # 切換到第二個(gè)窗口
    browser.switch_to.window(windows[-1])
    # 點(diǎn)擊簽到
    sign_button = browser.find_element_by_xpath('//*[@id="signstar_wrapper"]/a')
    # 防止點(diǎn)一次還不夠,要點(diǎn)兩次的情況
    # 直到加載完,最多等待10秒鐘
    browser.implicitly_wait(max_loading)
    time.sleep(wait_time)
    sign_button.click()
    sign_button.click()
    # time.sleep(wait_time)
    # 關(guān)閉當(dāng)前窗口
    browser.close()
    # 切換回最初的窗口
    browser.switch_to.window(windows[0])
    # 每6個(gè)下拉滾動(dòng)50像素
    if i % 6 == 0:
        num = i // 6
        print(num)
        # 若除以6是整數(shù),則下拉
        if isinstance(num, int):
            browser.execute_script(js + str(num * 50))
            print(num)
        # browser.execute_script("var EleId = document.getElementById('forumscontainer');console.log(50)")
        # print(i)
    # time.sleep(wait_time)

# print(tags)
# print(tags[0])

# 恢復(fù)為加載圖片
prefs = {"profile.managed_default_content_settings.images": 1}
chrome_options.add_experimental_option("prefs", prefs)

time.sleep(wait_time)


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI