您好,登錄后才能下訂單哦!
#-*- 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)
免責(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)容。