from selenium import webdriver from selenium.webdriver import ActionChains from selenium.webdriver.common.by import By #按照什么方式查找,By.ID,By.CSS_SELECTOR from selenium.webdriver.common.keys import Keys #键盘按键操作 from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait #等待页面加载某些元素 import re,sys,time,os browser=webdriver.Chrome() try: browser.get('https://weibo.com/u/5861571226') while 1: wait=WebDriverWait(browser,50) wait.until(EC.title_contains('个人主页')) #等到id为content_left的元素加载完毕,最多等10秒 time.sleep(10) yuma=browser.page_source lb=re.findall('<!----><!----><a title=".*?" href="(.*?)" class="head',yuma) print(browser.current_url) print(lb) #print(browser.get_cookies()) js = 'var q=document.documentElement.scrollTop=800' browser.execute_script(js) time.sleep(3) finally: pass #browser.close() def parse(): browser = webdriver.Chrome() # 加载界面 browser.get(response.request.url) sleep(3) # 获取页面初始高度 js = "return action=document.body.scrollHeight" height = browser.execute_script(js) # 将滚动条调整至页面底部 browser.execute_script('window.scrollTo(0, document.body.scrollHeight)') sleep(5) # 定义初始时间戳(秒) t1 = int(time.time()) # 定义循环标识,用于终止while循环 status = True # 重试次数 num = 0 while status: # 获取当前时间戳(秒) t2 = int(time.time()) # 判断时间初始时间戳和当前时间戳相差是否大于30秒,小于30秒则下拉滚动条 if t2 - t1 < 30: new_height = browser.execute_script(js) if new_height > height: sleep(2) browser.execute_script('window.scrollTo(0, document.body.scrollHeight)') # 重置初始页面高度 height = new_height # 重置初始时间戳,重新计时 t1 = int(time.time()) elif num < 3: # 当超过30秒页面高度仍然没有更新时,进入重试逻辑,重试3次,每次等待30秒 sleep(3) num = num + 1 else: # 超时并超过重试次数,程序结束跳出循环,并认为页面已经加载完毕! print("滚动条已经处于页面最下方!") status = False # 滚动条调整至页面顶部 browser.execute_script('window.scrollTo(0, 0)') break sleep(3) # 打印页面源码 driver = browser.page_source print(driver)
标签:webdriver,PYTHON,selenium,网址,微博,sleep,import,页面,browser From: https://www.cnblogs.com/xkdn/p/17365080.html