python+selenium百度贴吧自动签到
#-*-coding:utf-8-*-fromseleniumimportwebdriverimporttimeimportosimportrandomfromselenium.webdriver.common.action_chainsimportActionChainsbrowser=webdriver.Chrome()#最大等待加载完的时间max_loading=600#延时随机n秒执行wait_time=random.randint(3,6)"""注意:要将原来打开的谷歌浏览器关闭干净"""#默认情况下selenium打开的是新的chrome,不会使用原有的cookie,如果想不要每次都输入账号、密码、验证码,就做相关设置profile_dir='C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\UserData'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("vareleDiv=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("vareleDiv=document.getElementsByClassName('j_panel_content');alert(eleDiv.innerHTML)")#time.sleep(wait_time)#获取那8个显示出来的吧的链接元素tags=browser.find_elements_by_class_name('u-f-item')#遍历它们fortagintags:#获取元素的高度#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='''//获取目标元素varEleId=document.getElementById('forumscontainer');vartargetEle=EleId.firstElementChild.firstElementChild//下拉滚动50像素targetEle.scrollTop='''#获取查看更多里的吧的标签,遍历签到moreTags=browser.find_elements_by_xpath('//*[@id="forumscontainer"]/div/div[1]/a')#print(len(moreTags))#exit()#每点完6个,上拉一定距离(防止按钮没出现,点不到的情况)i=0formoreTaginmoreTags:#获取元素高度#print(moreTag.size)i=i+1moreTag.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像素ifi%6==0:num=i//6print(num)#若除以6是整数,则下拉ifisinstance(num,int):browser.execute_script(js+str(num*50))print(num)#browser.execute_script("varEleId=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)
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。