fix
This commit is contained in:
@ -1,38 +1,68 @@
|
||||
import base64
|
||||
import json
|
||||
import logging
|
||||
import time
|
||||
import redis
|
||||
from selenium import webdriver
|
||||
from selenium.common import NoSuchElementException, NoSuchWindowException
|
||||
from selenium.common import NoSuchElementException, NoSuchWindowException, UnexpectedAlertPresentException
|
||||
from selenium.webdriver.common.by import By
|
||||
|
||||
|
||||
# from selenium.webdriver.support import expected_conditions
|
||||
# from selenium.webdriver.support.wait import WebDriverWait
|
||||
CRAWL_INTERVAL = 0.5
|
||||
|
||||
|
||||
def get_qrcode():
|
||||
driver = webdriver.Chrome()
|
||||
service = webdriver.ChromeService(executable_path="C:/Users/Administrator/Documents/chromedriver_win32/chromedriver.exe")
|
||||
driver = webdriver.Chrome(service=service)
|
||||
redis_client = redis.StrictRedis(host="localhost", port=6379, db=0)
|
||||
driver.get("http://localhost:3030")
|
||||
driver.get("https://icme.haoyisheng.com")
|
||||
json_str_temp = ""
|
||||
while True:
|
||||
try:
|
||||
qrcode_canvas = driver.find_element(By.CLASS_NAME, "qrcode")
|
||||
qrcode_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(22);",
|
||||
qrcode_canvas)
|
||||
# qrcode_png = base64.b64decode(qrcode_base64)
|
||||
json_str = json.dumps({"qrcode": qrcode_base64})
|
||||
qrcode_tab = driver.find_element(By.CSS_SELECTOR, ".x-tab-strip-active .x-tab-strip-text")
|
||||
if qrcode_tab.get_attribute("innerHTML") != "课题二维码":
|
||||
json_str = json.dumps({"qrcode": None})
|
||||
if json_str != json_str_temp:
|
||||
json_str_temp = json_str
|
||||
redis_client.publish("qrcode", json_str)
|
||||
print("未打开二维码页面")
|
||||
time.sleep(CRAWL_INTERVAL)
|
||||
continue
|
||||
|
||||
# 查找二维码所在iframe
|
||||
qrcode_frame = driver.find_element(By.CSS_SELECTOR, "#menuItemSubjectQrCode iframe")
|
||||
# 切换到iframe
|
||||
driver.switch_to.frame(qrcode_frame)
|
||||
# 获取二维码src
|
||||
qrcode_img = driver.find_element(By.CSS_SELECTOR, "#imgDiv #img")
|
||||
qrcode_src = qrcode_img.get_attribute("src")
|
||||
# 课题名称,起止时间
|
||||
topic_title = driver.find_element(By.CSS_SELECTOR, "#title h1:first-child").text
|
||||
start_time = driver.find_element(By.CSS_SELECTOR, "#title #p1").text
|
||||
end_time = driver.find_element(By.CSS_SELECTOR, "#title #p2").text
|
||||
|
||||
json_str = json.dumps(
|
||||
{"qrcode": qrcode_src, "title": topic_title, "start_time": start_time, "end_time": end_time})
|
||||
if json_str != json_str_temp:
|
||||
json_str_temp = json_str
|
||||
redis_client.publish("qrcode", json_str)
|
||||
print("二维码已更新")
|
||||
print("二维码已更新", topic_title, start_time, end_time)
|
||||
driver.switch_to.default_content()
|
||||
|
||||
except NoSuchElementException:
|
||||
json_str = json.dumps({"qrcode": None})
|
||||
if json_str != json_str_temp:
|
||||
json_str_temp = json_str
|
||||
redis_client.publish("qrcode", json_str)
|
||||
driver.switch_to.default_content()
|
||||
print("二维码不存在")
|
||||
|
||||
except UnexpectedAlertPresentException:
|
||||
print("UnexpectedAlertPresentException")
|
||||
time.sleep(CRAWL_INTERVAL)
|
||||
continue
|
||||
|
||||
except NoSuchWindowException:
|
||||
print("窗口已关闭")
|
||||
json_str = json.dumps({"qrcode": None})
|
||||
@ -40,29 +70,12 @@ def get_qrcode():
|
||||
json_str_temp = json_str
|
||||
redis_client.publish("qrcode", json_str)
|
||||
break
|
||||
time.sleep(0.5)
|
||||
time.sleep(CRAWL_INTERVAL)
|
||||
driver.quit()
|
||||
|
||||
|
||||
def main():
|
||||
get_qrcode()
|
||||
# driver = webdriver.Chrome()
|
||||
# driver.get("http://localhost:3030")
|
||||
# # qrcode_login = driver.find_element(By.ID, "lbApp")
|
||||
# # qrcode_login.click()
|
||||
# # qrcode_canvas = None
|
||||
#
|
||||
# qrcode_canvas = WebDriverWait(driver, 1000 * 60 * 60 * 24).until(
|
||||
# expected_conditions.presence_of_element_located((By.CSS_SELECTOR, ".qrcode"))
|
||||
# )
|
||||
# qrcode_base64 = driver.execute_script("return arguments[0].toDataURL('image/png').substring(22);", qrcode_canvas)
|
||||
#
|
||||
# qrcode_png = base64.b64decode(qrcode_base64)
|
||||
#
|
||||
# with open("qrcode.png", "wb") as qrcode_png_file:
|
||||
# qrcode_png_file.write(qrcode_png)
|
||||
# # time.sleep(8)
|
||||
# driver.quit()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
@ -1,6 +1,6 @@
|
||||
[tool.poetry]
|
||||
name = "get-qrcode"
|
||||
version = "0.1.0"
|
||||
version = "0.9.0"
|
||||
description = ""
|
||||
authors = ["quantulr <35954003+quantulr@users.noreply.github.com>"]
|
||||
readme = "README.md"
|
||||
@ -17,4 +17,4 @@ requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
|
||||
[tool.poetry.scripts]
|
||||
dev = "get_qrcode.main:main"
|
||||
get-qrcode = "get_qrcode.main:main"
|
||||
|
Reference in New Issue
Block a user