使用Python及Selenium自动发表文章

本文的主要内容是使用Python及Selenium自动发表文章到思否的实现思路及方式的介绍并为读者提供参考的源代码。

目录

实现思路

在自动发表文章时,我们的实现思路大致如下:

  1. 对Markdown文章进行处理,生成相应的配置及内容。
  2. 模拟登录目标网站,在此我们选择了使用QQ授权登录。
  3. 将文章内容写入网站的编辑器并发表。

Markdown文章的处理

目前来说,我的博客技术公馆使用Hugo进行构建。和许多其他的博客框架类似,Hugo中的文章主要由 title , categories 等配置字段及文章的正文。一般来说,配置字段都使用了 yaml语法或 toml 语法。由于我使用的是 yaml 语法,因此此文中的示例为处理 yaml 语法的配置字段。

对于文章的处理较为简单,只需按配置字段对应的语法进行处理并将其与正文内容保存即可。

为了将文章更规整地保存,我将配置字段及正文保存在 Post 实体类中,如下所示:

class Post(object):

    def __init__(self, title, tags, categories, content, draft):
        self.title = title
        self.tags = tags
        self.categories = categories
        self.content = content
        self.draft = draft

由于目前的功能较为简单,我只选用了配置字段中的 title , tags , categories 及 draft 。 title , tags 及 categories 会被应用于文章的发表过程中。 draft 则决定文章是否为草稿。

由于Hugo文章中使用 --- 来划分 yaml 语法的配置字段,我们在读取文章时,只需依据 ---将文章分为配置字段及正文即可。为了处理 yaml 语法的配置字段,需要 import yaml 来对其进行操作。

模拟登录目标网站

由于许多平台在使用账号密码登录时都会进行验证,且绝大多数国内平台都支持QQ授权登录。为了避免对验证码的识别且登录模块的复用,我选择了使用QQ进行登录。

我们首先会读取本地cookies,如果不存在本地cookies则使用QQ登录。读取cookies的代码如下所示:

try:
    with open('segmentfault_cookies.json', 'r', encoding='utf-8') as f:
        cookies = json.loads(f.read())
except FileNotFoundError:
    cookies = json.loads(segmentfault_login.qq(driver, timeout))

使用QQ登录时,只需模拟点击QQ登录的按钮,就可以进入登录界面。如果有对Selenium

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值