一键自动化博客发布工具,用过的人都说好(51cto篇)

news/2024/9/20 22:52:52

51cto是一个优秀的博客平台,今天给大家讲解一下blog-auto-publishing-tools如何自动发布博客到51cto上。

当然在实现过程中有可能会遇到各种困难,不过不用担心,我们一个个来解决。

前提条件

前提条件当然是先下载 blog-auto-publishing-tools这个博客自动发布工具,地址如下:https://github.com/ddean2009/blog-auto-publishing-tools

51cto的实现

51cto的实现相对而言比较复杂一点,因为他的选项比较多,实现方式跟其他平台也不太一样。

标题输入

首先来看下它的标题。

51cto的标题还是比较标准的,他带有一个id,所以我们可以直接通过ID来定位到标题元素,从而输入内容:

image-20240508231222877

具体的代码实现如下:

    # 文章标题title = driver.find_element(By.ID, 'title')title.clear()if 'title' in front_matter['title'] and front_matter['title']:title.send_keys(front_matter['title'])else:title.send_keys(common_config['title'])time.sleep(2)  # 等待3秒

文章内容

接下来就是文章内容了.51cto用的是一个textArea,并没有用到codeMirror之类的动态编辑工具。

所以我们可以简单的调用textArea的send_keys方法,来填充内容:

    # 文章内容 markdown版本file_content = read_file_with_footer(common_config['content'])# 找到初始的内容描述文字content = driver.find_element(By.XPATH, '//textarea[@placeholder="请输入正文"]')content.send_keys(file_content)time.sleep(15)  # 等待15秒 需要进行图片解析

这里的textarea通过xpath来定位。

注意,一旦你输入文章内容之后,51cto会做一个保存草稿的操作,如果你的内容里面有图的话,会耗时比较长的时间。

所以这里我选择的是sleep15秒钟。

发布文章

接下来我们就可以点击发布文章按钮了。

我们通过xpath找到发布文章按钮。然后点击他。

这里要注意的是,如果你直接通过send_button.click来点击这个按钮实际上是不行的。

所以,我们使用了一个小技巧。这里我们使用ActionChains来模拟鼠标的点击,来实现:

    # 发布文章send_button = driver.find_element(By.XPATH, '//button[contains(@class, "edit-submit")]')ActionChains(driver).click(send_button).perform()time.sleep(5)

点击这个按钮之后,会弹出一个比较复杂的框:

image-20240508234358681

这里我们需要填写分类,标签等数据。

设置分类

文章分类没什么好说的,就是通过xpath来定位到要选择的type元素。

然后触发click操作。

    # 文章分类type = cto51_config['type']type_button = driver.find_element(By.XPATH, f'//div[@class="types-select-box"]//span[contains(text(),"{type}")]')type_button.click()time.sleep(2)

这里的type是在config/51cto.yaml文件中定义的。

设置个人分类

个人分类是一个下拉框,这里我们需要分两步实现。

第一步点击个人分类下拉框。

第二步从下拉框中选择出你要设置的个人分类。

image-20240509102330107

这里的个人分类下拉框还是有些难度的,选择起来比较复杂,大家可以看看我的实现代码:

    # 个人分类personal_type = cto51_config['personal_type']personal_type_input = driver.find_element(By.ID, 'selfType')personal_type_input.click()time.sleep(1)personal_type_element = driver.find_element(By.XPATH,f'//div[@class="el-select classification person-type"]//li[@class="el-select-dropdown__item"]/span[text()="{personal_type}"]')personal_type_element.click()time.sleep(1)

设置个人标签

个人标签可以先找到标签输入框,然后输入对应的标签,回车就可以输入标签了。

具体的代码如下:

    # 标签if 'tags' in front_matter and front_matter['tags']:tags = front_matter['tags']else:tags = cto51_config['tags']if tags:tag_input = driver.find_element(By.ID, 'tag-input')tag_input.clear()for tag in tags:tag_input.send_keys(tag)time.sleep(1)tag_input.send_keys(Keys.ENTER)

实际运行过程中,你会发现51cto会自动帮你设置一些标签,如下所示:

image-20240509121303976

所以,我们需要先把自动设置的标签清理掉,然后再添加上我们自己的标签。

上面代码中的tag_input.clear() 是没有效果的。

我们需要这样做:

tag_list_div = tag_input.find_element(By.XPATH, 'preceding-sibling::div')
# 使用 JavaScript 删除子元素
driver.execute_script("arguments[0].innerHTML = '';", tag_list_div)

通过定位到tag_input上面的tag_list_div元素,然后借用JS方法来清除里面的子元素。

设置摘要

51cto的文章摘要是一个textarea,带ID的那种。

所以设置摘要还是很简单的:

    # 摘要if 'description' in front_matter['description'] and front_matter['description']:summary = front_matter['description']else:summary = common_config['summary']if summary:summary_input = driver.find_element(By.ID, 'abstractData')summary_input.clear()summary_input.send_keys(summary)

设置话题

最后就是设置话题了。

同样的,需要先点击设置话题下拉框,然后再从下拉选项中选中要设置的话题,点击即可。

    # 话题topic = cto51_config['topic']if topic:topic_input = driver.find_element(By.ID, 'subjuct')topic_input.click()time.sleep(1)list_item_list = driver.find_element(By.ID, 'listItemList')list_item_list.find_element(By.XPATH, f'//li[contains(text(),"{topic}")]').click()

最后发布按钮

如果一切都设置完毕之后,就可以点击发布按钮了。

    # 发布if auto_publish:publish_button = driver.find_element(By.ID, 'submitForm')publish_button.click()

总结

51cto需要填写的选项还是比较多的,大家在实现的过程中需要注意。

点我查看更多精彩内容:www.flydean.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31798.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

实验三 电子传输系统安全-进展1

任务详情上周任务完成情况(代码链接,所写文档等) 本周计划上周任务完成情况将上学期电子公文传输系统重新调试通过 哈希存储用户口令并且加盐,能够切换哈希算法 使用国密证书任务 完成情况启动系统 成功哈希口令并加盐 成功使用国密证书 失败上周任务详情 1. 重新调试通过上…

ITIL4之IT服务战略

战略和IT战略战略 的概念最早源于军事领域,意在通过对战争全局的精心规划和指挥,利用有限资源高效达成政治和军事目标。这一思想逐渐扩展到商业、管理乃至信息技术领域,成为指导长远发展和资源配置的核心框架。IT战略 是将军事战略的智慧引入企业信息化管理的产物,它基于对…

SpringBoot SpringCloud Spring Cloud Alibaba 版本对应关系

最近公司的项目扫描出一些安全漏洞,于是让我给项目中的依赖升下级。有部分涉及到SpringBoot和SpringCloud,因此要考虑到兼容性,特此记录下查询各版本之间对应关系的方法。靠谱的方法还是要从官网得到,参考文章:工具篇--SpringBoot与SpringCloud 的版本对应关系&Spring…

visual studio installer“无法下载安装,请检查网络连接”问题的解决方法

打开“网络适配器” 打开“属性” 选择“Internet协议版本4(TCP/IPv4)” 选择“属性”双击进入 选择“使用下面的DNS服务器地址(E)” 首选DNS服务器填写: 114.114.114.114 备用DNS服务器填写: 8.8.8.8

如何基于surging架设流媒体视频推流(视频讲解)

前言随着直播行业大火,各种直播类产品和产品层出不穷,能够满足各方人员的需求和互动,也使得斗鱼、虎牙、抖音都随着直播业的大火而欣欣向荣, 大家也对直播平台了解不少,也参与使用,但是怎么样才能研发出视频直播平台呢?那么针对于这个问题就是我今天想给大家讲解的一些东…

2024 年 5 月 14 日 周二 多云 热(270 字)

正文今天好忙,一楼二楼来回跑。都 17:57 了,忽然打电话说要临时上来报一个表,我真服了。今晚罕见地只有我一个人吃饭。昨天练习完之后有一些进步。Routine 里面加了三步。代价就是今天右手特别疼,因为昨天练习太久,掌骨关节在地上摁太久了。文件已经出了,明天似乎就要正式…

FTP Serv-U 配置端口号

1.打开Ser-U管理控制台,如图操作 2.修改监听端口号

ubuntu linux安装MySQL后遇到的一些问题和解决方法

Ubuntu linux安装MySQL后遇到的一些问题和解决方法版本信息 ubuntu: Ubuntu 24.04 mysql: Ver 8.0.36-2ubuntu3 for Linux on x86_64 ((Ubuntu)) 登陆 安装后直接 sudo mysql 就可以登陆 分析 为什么可以不用sudo mysql -u root -p呢? 原因有三点直接执行mysql命令它是可以根据…