Python + Selenium 自动发布文章(四):加入 bat 脚本

简介: Python + Selenium 自动发布文章系列:Python + Selenium 自动发布文章(一):开源中国Python + Selenium 自动发布文章(二):简书Python + Selenium 自动发布文章(三):CSDNPython + Selenium 自动发布文章(四):加入 bat 脚本写在前面  这是本系列的第四篇文章,同时也是最后一篇。

Python + Selenium 自动发布文章系列:
Python + Selenium 自动发布文章(一):开源中国
Python + Selenium 自动发布文章(二):简书
Python + Selenium 自动发布文章(三):CSDN
Python + Selenium 自动发布文章(四):加入 bat 脚本

写在前面

  这是本系列的第四篇文章,同时也是最后一篇。有关于Bat脚本和自动发布博客的内容,不太了解的可以先看看之前写的文章。这篇文章是介绍如何整合Bat脚本来一键自动发博客,包括我的Hexo博客简书开源中国CSDN。好了,在那之前我们先稍微调整一下代码。

代码改造

  这里只需要调整一下main.py即可,引入sys这个moudle,到时我们通过Bat命令占位符的形式进行传参,参数是Markdown文件名称(含文件后缀.md),参考代码如下:

import re
import sys
import csdn
import jianshu
import oschina


class Main(object):
    # init
    def __init__(self, file):
        self.title = ''
        self.content = ''
        self.category = ''
        self.tags = ''
        # OsChina的系统分类, 设个默认值
        self.osChina_sys_category = '编程语言'
        # CSDN的文章分类, 设个默认值
        self.csdn_article_category = '原创'
        # CSDN的博客分类, 设个默认值
        self.csdn_blog_category = '后端'
        self.read_file(file)

    # 读取MD中的title, content, self_category, self_tags, osChina_sys_category, csdn_article_category, csdn_blog_category
    def read_file(self, markdown_file):
        with open(markdown_file, 'r', encoding='UTF-8') as f:
            self.content = f.read().split('-->\n')[1]
            # 重置文件指针偏移量
            f.seek(0)
            for line in f.readlines():
                if self.judge('title: ', line):
                    self.title = line.split('title: ')[1].strip('\n')
                elif self.judge('self_category: ', line):
                    self.category = line.split('self_category: ')[1].strip('\n')
                elif self.judge('self_tags: ', line):
                    self.tags = line.split('self_tags: ')[1].strip('\n')
                elif self.judge('osChina_sys_category: ', line):
                    self.osChina_sys_category = line.split('osChina_sys_category: ')[1].strip('\n')
                elif self.judge('csdn_article_category: ', line):
                    self.csdn_article_category = line.split('csdn_article_category: ')[1].strip('\n')
                elif self.judge('csdn_blog_category: ', line):
                    self.csdn_blog_category = line.split('csdn_blog_category: ')[1].strip('\n')

    # 正则匹配判断, 获取的信息需保证其标志的唯一性
    @staticmethod
    def judge(rule, line):
        if re.search(rule, line) is None:
            return False
        if 'self.' in line:
            return False
        return True


if __name__ == '__main__':
    # sys.argv[0] = 当前文件名,这里是main.py
    md_file = sys.argv[1]
    # md_file = 'auto.md'
    print("Markdown File is ", md_file)

    timeout = 10
    main = Main(md_file)

    # 开源中国
    osChina = oschina.OsChina()
    osChina.post(main, timeout)

    # 简书
    jian_shu = jianshu.JianShu()
    jian_shu.post(main, timeout)

    # CSDN
    csdn = csdn.CSDN()
    csdn.post(main, timeout)

Bat 脚本

  和以往一样,Bat脚本还是放在hexo的安装目录下,命名deploy.batPython + Selenium系列的所有代码已经上传到了我的GitHub仓库,同时为了代码的同步和方便,这里也直接在source\_posts目录下克隆了该仓库。Okay,关于这个一键部署的脚本参考如下:

:: 拉取最新的部署代码
cd source/_posts/auto-post
git pull origin master
:: 拉取最新的Markdown文章
cd ../
git pull origin master
:: 输入文件名(最好用双引号括起来)才执行一键部署
set /p fileName=
if defined fileName (start python auto-post/main.py %fileName%)
:: 这里是部署hexo
cd ../../
hexo g -d

运行效果

auto-post-bat
auto-post-bat

可优化点

  单从上面的效果图来看,代码就有很大的优化空间了。下面列出去的几点是目前发现已知的可优化点,计划等有时间再来慢慢改进:

  • 部分页面加载等待时间过长:在大多数情况下,其实需要处理元素已经完全加载显示出来了,但实际页面还在等待css、js等资源的完全加载;(可以设置最长加载等待时间)
  • 录入内容可能会很慢:当正文内容很长的时候,用selenium的send_keys方法其实是比较慢的,毕竟这种方式还是一个个字符的输入;(可以利用剪贴板的复制粘贴功能)
  • 可选第三方授权登录方式有限:如代码所示,目前仅有QQ授权的方式;(可以扩展新浪微博GitHub微信等渠道进行授权登录)
  • 发布文章的操作是串行的:目前deploy.bat脚本只是整合了这几个平台的发布文章操作,执行顺序是按代码顺序来的;(可以使用多线程技术同步完成多平台的发布操作)
  • 自定义分类的局限:目前只能输入已经自定义好的,其实应该先判断,当分类不存在时,就新增分类,然后再进行选择。

系列小结

  小结作个简单说明,本系列所演示的代码目前仅支持发布(单篇)文章,不支持文章的更新和多篇文章同时发布,只能说代码是死的,人才是活的,有时间有兴趣的可以自己捣腾一下。最后,结合这几个平台,附上Markdown中注释部分参数的说明和可选参数值,本系列的所有代码在GitHub仓库中。

参数名 说明/可选参数值
self_category 自定义的分类名称。在OSChina和CSDN叫个人分类,简书里叫文集
self_tags 文章的标签。OSChina和CSDN里用到,多个标签以(中文逗号)分隔
osChina_sys_category OSChina的系统分类。可选参数值有:移动开发前端开发人工智能服务端开发/管理游戏开发编程语言(默认值)、数据库企业开发图像/多媒体系统运维软件工程大数据云计算开源硬件区块链其他类型
csdn_article_category CSDN的文章类型。可选参数值有:原创(默认值)、转载翻译
csdn_blog_category CSDN的博客分类。可选参数值有:人工智能移动开发物联网架构云计算/大数据游戏开发运维数据库前端后端编程语言(默认值)、研发管理安全程序人生区块链音视频开发资讯计算机理论与基础
目录
相关文章
|
3天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
27天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
125 68
|
1天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
11天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
39 2
|
13天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
29 3
|
18天前
|
缓存 运维 NoSQL
python常见运维脚本_Python运维常用脚本
python常见运维脚本_Python运维常用脚本
24 3
|
18天前
|
数据采集 JSON 数据安全/隐私保护
Python常用脚本集锦
Python常用脚本集锦
18 2
|
19天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
23天前
|
数据采集 Web App开发 前端开发
Python爬虫进阶:Selenium在动态网页抓取中的实战
【10月更文挑战第26天】动态网页抓取是网络爬虫的难点,因为数据通常通过JavaScript异步加载。Selenium通过模拟浏览器行为,可以加载和执行JavaScript,从而获取动态网页的完整内容。本文通过实战案例,介绍如何使用Selenium在Python中抓取动态网页。首先安装Selenium库和浏览器驱动,然后通过示例代码展示如何抓取英国国家美术馆的图片信息。
47 6
|
20天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
下一篇
无影云桌面