auth.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from selenium import webdriver
  2. from selenium.webdriver.support.wait import WebDriverWait
  3. from selenium.webdriver.support import expected_conditions as EC
  4. from selenium.webdriver.common.by import By
  5. from pyquery import PyQuery as pq
  6. from bs4 import BeautifulSoup
  7. from time import sleep
  8. import time
  9. import traceback
  10. import json
  11. import os
  12. chrome_path = "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
  13. # 登录成功后,记录cookie以后好用
  14. def record_cookie(browser):
  15. try:
  16. cookies = browser.get_cookies()
  17. print(cookies)
  18. with open('data.json', 'w') as f:
  19. json.dump(cookies, f)
  20. except:
  21. browser.quit()
  22. print("no_login_id")
  23. # browser.quit()
  24. return
  25. # 登录时添加记录cookies,
  26. def add_cookie(browser):
  27. # 加cookies
  28. with open('data.json', 'r') as f:
  29. data = json.load(f)
  30. for c in data:
  31. # print(str(c))
  32. if 'expiry' in c:
  33. str_ex = str(c["expiry"])
  34. if str_ex.find(".") > -1:
  35. list_ex = str_ex.split(".")
  36. c["expiry"] = int(list_ex[0])
  37. # print(str(c))
  38. browser.add_cookie(c)
  39. # 检测是否登录成功
  40. def check_login(browser):
  41. login_flag=get_login_flag(browser)
  42. if not login_flag is None: # 没有登录成功
  43. # 人工登录了
  44. sleep(30)
  45. for i in range(10):
  46. print('第%d次检测登录' % (i))
  47. login_flag=get_login_flag(browser)
  48. if login_flag is None: # 登录进了
  49. record_cookie(browser)
  50. return True
  51. sleep(10)
  52. return False
  53. print('登录成功')
  54. return True
  55. # 获取登录页面上的标记
  56. def get_login_flag(browser):
  57. try:
  58. login_flag = browser.find_element(By.ID, "check_svg__b")
  59. except:
  60. try:
  61. login_flag = browser.find_element(By.CLASS_NAME, "qr-container")
  62. except:
  63. print("没有找到登录标记,说明已经登录成功")
  64. return None
  65. return login_flag