note_set Help

Selenium auto import md files

from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys import time # 内容格式: ['牛客_魔法表.md','牛客_魔法阵.md','牛客_龙与地下城游戏问题.md'] MD_FILE_LIST = '/xxx/yyy/zzz/solution_titles_nc.txt' # 本地md文件 实际存放路径 MD_FILE_REAL_DIR = '/xxx/yyy/zzz/solutions-ok-csdn' # google chrome for testing & chromedriver 版本需要相同 比如: 137.0.7151.68 <- chrome://version/ # chrome & chromedriver download url: https://googlechromelabs.github.io/chrome-for-testing/ service = Service('/usr/local/bin/chromedriver') driver = webdriver.Chrome(service=service) print("----------------------------start----------------------------") url = 'https://editor.csdn.net/md/?not_checkout=1&spm=1001.2101.3001.5352' driver.get(f"{url}") print(f"----------------------------edit url: {url}") # 需要手动登录 time.sleep(15) # csdn每日限制15篇 md_file_list = [] with open(f"{MD_FILE_LIST}", 'r') as file: # 读取并去除首尾空格 content = file.read().strip() # 将字符串转为列表 md_file_list = eval(content) # 登录后 循环上传文件 for md_file in md_file_list: print(f"----------------------------md file: {md_file}") time.sleep(1) # 直接操作文件输入框 输入md文件 标题及内容 file_input = driver.find_element(By.ID, "import-markdown-file-input") file_input.send_keys(f"{MD_FILE_REAL_DIR}/{md_file}") time.sleep(3) # 点击 '发布文章' 按钮 driver.find_element(By.CSS_SELECTOR, ".btn.btn-publish").click() time.sleep(3) # 点击 '添加标签'按钮 add_tag_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, ".tag__btn-tag")) ) add_tag_btn.click() # 搜索框输入 'java'标签 search_input = driver.find_element(By.CSS_SELECTOR, ".el-input__inner") search_input.send_keys("java") time.sleep(1) # 按 'ENTER' 键 search_input.send_keys(Keys.ENTER) # 等待标签添加完成(可选) WebDriverWait(driver, 5).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".el-tag--light")) ) # 点击 '关闭标签'弹出框 close_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, ".mark_selection_box_body > .modal__close-button")) ) if not close_btn.is_displayed(): # 无视前端校验 直接javascript点击关闭 driver.execute_script("arguments[0].click();", close_btn) else: close_btn.click() time.sleep(3) # 勾选 备份gitcode checkbox driver.find_element(By.CSS_SELECTOR, ".el-checkbox__input").click() time.sleep(2) # 点击 '发布'按钮 (最后步骤) driver.find_element(By.CSS_SELECTOR, ".button.btn-b-red.ml16").click() time.sleep(5) # 点击 '再写一篇'按钮 new_btn = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, ".success-modal-btn.active")) ) # 无视 '选择身份'弹出框 直接点击 '再写一篇'按钮 driver.execute_script("arguments[0].click();", new_btn) print(f"----------------------------md file: {md_file}发布成功!----------------------------\n") # 防止频率限制 time.sleep(5) driver.quit()
10 June 2025