Python + Selenium 实现自动发文章

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Python + Selenium 实现自动发文章

步骤

1. 安装必要的依赖

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

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

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

    • 使用以下命令安装 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. 验证码处理

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

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

演示视频

点击跳转B站

image-20250107000536512

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

点击下载

总结

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

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值