python爬取数据时遭遇动态滚动条

tsd

发布日期: 2021-06-10 10:05:31 浏览量: 45
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com
  1. from selenium import webdriver
  2. from selenium.webdriver.chrome.options import Options
  3. import time
  4. # 创建chrome浏览器驱动,无头模式
  5. chrome_options = Options()
  6. # chrome_options.add_argument('--headless')
  7. chrome_options.add_argument("--start-maximized");
  8. driver = webdriver.Chrome("D://googleDever//chromedriver.exe",chrome_options=chrome_options)
  9. # 加载界面
  10. driver.get("https://wenku.baidu.com/search?lm=0&od=0&ie=utf-8&word=csdn")
  11. time.sleep(3)
  12. # 获取页面初始高度
  13. js = "return action=document.body.scrollHeight"
  14. height = driver.execute_script(js)
  15. # 将滚动条调整至页面底部
  16. driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
  17. time.sleep(5)
  18. #定义初始时间戳(秒)
  19. t1 = int(time.time())
  20. #定义循环标识,用于终止while循环
  21. status = True
  22. # 重试次数
  23. num=0
  24. while status:
  25. # 获取当前时间戳(秒)
  26. t2 = int(time.time())
  27. # 判断时间初始时间戳和当前时间戳相差是否大于30秒,小于30秒则下拉滚动条
  28. if t2-t1 < 30:
  29. new_height = driver.execute_script(js)
  30. if new_height > height :
  31. time.sleep(1)
  32. driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
  33. # 重置初始页面高度
  34. height = new_height
  35. # 重置初始时间戳,重新计时
  36. t1 = int(time.time())
  37. elif num < 3: # 当超过30秒页面高度仍然没有更新时,进入重试逻辑,重试3次,每次等待30秒
  38. time.sleep(3)
  39. num = num+1
  40. else: # 超时并超过重试次数,程序结束跳出循环,并认为页面已经加载完毕!
  41. print("滚动条已经处于页面最下方!")
  42. status = False
  43. # 滚动条调整至页面顶部
  44. driver.execute_script('window.scrollTo(0, 0)')
  45. break
  46. # 打印页面源码
  47. content = driver.page_source
  48. print(content)
上传的附件 cloud_download 爬取数据时遭遇动态滚动条.md ( 2.06kb, 1次下载 )

tsd

发送私信

5
文章数
1
评论数
最近文章
eject