Python + Selenium 实现自动发文章

Python + Selenium 实现自动发文章

步骤

1. 安装必要的依赖

在开始之前,确保安装了以下必要的软件和库:

  1. **安装 Chrome 浏览器和对应版本的 **Selenium IDE:

  2. 源码与文件下载在文章末尾
  3. 安装 Selenium

  4. 使用以下命令安装 Selenium:
    pip install selenium
    

2. 准备用户登录信息
  • 创建一个字典 credentials,存储用户的登录信息(用户名、密码)、文章标题和内容文件路径。
    credentials = [
        {
            "user": "用户名",
            "password": "密码",
            "title": "文章标题",
            "content_path": "B.txt"  # 存放文章内容的文件路径
        }
    ]
    

  • 3. 封装登录逻辑
  • 使用 Selenium 模拟登录 CSDN 的过程:
    1. 启动浏览器并打开 CSDN 登录页面。
    2. 切换到“密码登录”模式。
    3. 填写用户名和密码并点击登录按钮。
  • 关键代码:

    driver.get("https://passport.csdn.net/login?code=applets")
    
    password_tab = wait.until(
        EC.element_to_be_clickable((By.CSS_SELECTOR, ".login-box-tabs-items > span:nth-child(4)"))
    )
    password_tab.click()
    
    username_input = wait.until(
        EC.presence_of_element_located((By.CSS_SELECTOR, ".login-form-item:nth-child(1) .base-input-text"))
    )
    username_input.send_keys(username)
    
    password_input = wait.until(
        EC.presence_of_element_located((By.CSS_SELECTOR, ".login-form-item:nth-child(2) .base-input-text"))
    )
    password_input.send_keys(password)
    
    login_button = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".base-button")))
    login_button.click()
    

    4. 打开文章编辑页面
  • 登录成功后,导航到 CSDN 博文编辑页面:
    driver.get("https://editor.csdn.net/md/?not_checkout=1&spm=1015.2103.3001.8066")
    

  • 5. 设置文章标题和内容
  • 使用 Selenium 定位标题输入框和文章内容编辑区域,依次填写标题和内容。
  • 设置标题:

    title_input = driver.find_element(By.CSS_SELECTOR, ".article-bar__title")
    title_input.click()
    title_input.clear()
    title_input.send_keys(title)
    

    填写文章内容:

  • B.txt 文件中读取内容,并逐行填充到编辑器中。
  • with open(content_path, "r", encoding="utf-8") as file:
        content = file.read()
    
    lines = content.split("\n")
    for line in lines:
        content_editor.send_keys(line)
        content_editor.send_keys(Keys.RETURN)
    

    6. 发布文章
  • 定位并点击发布按钮:
    publish_button = driver.find_element(By.CSS_SELECTOR, ".btn-publish")
    publish_button.click()
    

  • 原理

    1. Selenium 工作机制

    Selenium 是一个用于 Web 浏览器自动化的工具,它通过浏览器驱动(如 ChromeDriver)直接与浏览器交互,完成网页操作(如点击按钮、输入文本、提交表单等)。它的核心原理包括:

  • 模拟用户行为:通过定位页面元素,模拟点击、输入等操作。
  • 动态加载处理:通过显式等待机制处理动态页面加载。
  • 2. 无痕模式
  • 启用浏览器的无痕模式,避免缓存和历史记录影响自动化流程:
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument("--incognito")
    
  • 3. 自动化扩展禁用
  • 禁用自动化检测机制,避免目标网站识别为机器人操作:
    chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
    chrome_options.add_experimental_option("useAutomationExtension", False)
    
  • 4. 显式等待机制
  • 使用 WebDriverWait 等待页面加载完成或特定元素变为可交互状态,避免由于网络延迟导致的错误:
    wait = WebDriverWait(driver, 20)
    element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "选择器")))
    

  • 注意事项

    1. 账号安全

    2. 登录时输入的用户名和密码存在敏感信息,建议使用加密存储或读取环境变量。
    3. 动态页面处理

    4. 如果页面加载较慢或元素位置发生变化,需要适当调整显式等待的超时时间和选择器。
    5. 验证码处理

    6. 如果目标网站有验证码,可能需要使用第三方服务(如 OCR)或手动辅助解决。
    7. 长时间运行问题

    8. Selenium 驱动长时间运行可能会导致内存泄漏,建议完成任务后调用 driver.quit() 释放资源。

    演示视频

    点击跳转B站

    image-20250107000536512

    源码与浏览器插件Selenium IDE下载

    点击下载

    总结

    通过 Selenium,我们能够自动完成 CSDN 登录、文章编辑和发布的全过程。其核心在于对页面元素的精准定位和用户操作的模拟。通过配置无痕模式和显式等待,我们可以提升脚本的鲁棒性,避免操作失败。

    作者:mamahaha2025

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python + Selenium 实现自动发文章

    发表回复