您好,登錄后才能下訂單哦!
#-*- 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)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。