python+selenium百度贴吧自动签到
admin
2023-07-20 00:01:42
0
#-*- coding:utf-8 -*-
from selenium import webdriver
import time
import os
import random
from selenium.webdriver.common.action_chains import ActionChains

browser = webdriver.Chrome()

# 最大等待加载完的时间
max_loading = 600
# 延时随机n秒执行
wait_time = random.randint(3, 6)

"""
注意:要将原来打开的谷歌浏览器关闭干净
"""

# 默认情况下selenium打开的是新的chrome,不会使用原有的cookie,如果想不要每次都输入账号、密码、验证码,就做相关设置
profile_dir = 'C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data'
chrome_options = webdriver.ChromeOptions()
# 增加该设置,防止chrome出现:chrome正受到自动测试软件的控制。使得不能继续访问
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)")

# 移动鼠标到"查看更多"元素上
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个显示出来的吧的链接元素
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
    # 切换到第二个窗口
    browser.switch_to.window(windows[-1])
    # 点击签到
    sign_button = browser.find_element_by_xpath('//*[@id="signstar_wrapper"]/a')
    # 防止点一次还不够,要点两次的情况
    # 直到加载完,最多等待10秒钟
    browser.implicitly_wait(max_loading)
    time.sleep(wait_time)
    sign_button.click()
    sign_button.click()
    # time.sleep(wait_time)
    # 关闭当前窗口
    browser.close()
    # 切换回最初的窗口
    browser.switch_to.window(windows[0])
    # time.sleep(wait_time)

# 移动鼠标到"查看更多"元素上
checkMore = browser.find_element_by_xpath('//*[@id="moreforum"]/a')
ActionChains(browser).move_to_element(checkMore).perform()

# js获取元素
js = '''//获取目标元素
var EleId = document.getElementById('forumscontainer');
var targetEle = EleId.firstElementChild.firstElementChild
//下拉滚动50像素
targetEle.scrollTop='''

# 获取查看更多里的吧的标签,遍历签到
moreTags = browser.find_elements_by_xpath('//*[@id="forumscontainer"]/div/div[1]/a')
# print(len(moreTags))
# exit()
# 每点完6个,上拉一定距离(防止按钮没出现,点不到的情况)
i = 0
for moreTag in moreTags:
    # 获取元素高度
    # print(moreTag.size)
    i = i + 1
    moreTag.click()
    # 直到加载完,最多等待10秒钟
    browser.implicitly_wait(max_loading)
    # 获取所有窗口
    windows = browser.window_handles
    # 切换到第二个窗口
    browser.switch_to.window(windows[-1])
    # 点击签到
    sign_button = browser.find_element_by_xpath('//*[@id="signstar_wrapper"]/a')
    # 防止点一次还不够,要点两次的情况
    # 直到加载完,最多等待10秒钟
    browser.implicitly_wait(max_loading)
    time.sleep(wait_time)
    sign_button.click()
    sign_button.click()
    # time.sleep(wait_time)
    # 关闭当前窗口
    browser.close()
    # 切换回最初的窗口
    browser.switch_to.window(windows[0])
    # 每6个下拉滚动50像素
    if i % 6 == 0:
        num = i // 6
        print(num)
        # 若除以6是整数,则下拉
        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])

# 恢复为加载图片
prefs = {"profile.managed_default_content_settings.images": 1}
chrome_options.add_experimental_option("prefs", prefs)

time.sleep(wait_time)


相关内容

热门资讯

凤凰晚报丨释永信为何数罪并罚? 今日人物【释永信为何数罪并罚?】2026年5月29日,河南省新乡市中级人民法院一审公开宣判被告人刘应...
“完全胜利”变“战略止损”,特... 编者按当地时间6月17日,美国与伊朗正式确认签署14点谅解备忘录。与此前流传的草案相比,14点正式文...
华为、寒武纪带头,国产芯片玩家... 文源 | 源媒汇 作者 | 谢春生 国产GPU的头部牌桌上,正在悄悄“加人”。 近来,据媒体报道,字...
看不见的“通信网”究竟有多“新... 新一代通信网是国家规划建设的“六张网”的重要组成部分,它对低空经济的重要性,也是这张网打通经济社会发...
原创 预... 叠加618年中大促后,有5款千元机值得强烈推荐,起售价格从1032元到1299元,性价比和用户体验都...
几素科技申请无叶风扇专利,产生... 国家知识产权局信息显示,深圳市几素科技有限公司申请一项名为“一种无叶风扇”的专利,公开号CN1222...
扬言要查处花莲等地多个农会及农... 【环球网报道】据台湾联合新闻网6月18日报道,海峡论坛结束后,台陆委会扬言要对花莲、云林、南投、屏东...
高校毕业祝福语写成“前途亦烂烂... 据华商报大风新闻,近日,辽宁沈阳多名网友通过社交平台发帖称,当地一高校毕业季展板的宣传语写成了“人生...
俄罗斯和东盟加强合作,会否影响... 俄罗斯和东盟17日到19日在俄罗斯喀山举行峰会,纪念俄罗斯-东盟建立关系35周年。北京外国语大学区域...
查封保全的“全季酒店”被违法改... 澎湃新闻记者 王健西安市中心黄金地段的钟楼,人流密集商业发达,百米开外的西北方向,坐落着一栋名为鸿禧...