前言
wordpress
算是比较流行的博客网站框架, 我本人也一直在使用, 关于python
采集文章的上传, 有以下几种方法:
- 直接操作数据库
- 使用
wordpress
的rest api
- 使用
wordpress_xmlrpc
第三方模块
其中第三种的体验最为舒适, 对新手友好, 推荐使用
好了 接下来挨个介绍一下这几种方法的使用
直接操作数据库
我们可以使用python
的pymysql
库进行mysql
数据库的直连操作, 具体不过多介绍, 直接上示例代码:
1 | import pymysql.cursors |
使用wordpress的rest api
关于rest api
官方文档如下:
https://developer.wordpress.org/rest-api/
我们先试一下api的威力 格式为:
1 | http://{域名}/index.php/wp-json/wp/v2/posts |
比如:
1 | http://www.jhcms.net/index.php/wp-json/wp/v2/posts |
我们能看到几乎大部分文章的信息
那么如何创建一个新文章
我们参考官方文档 https://developer.wordpress.org/rest-api/reference/posts/#create-a-post
得到重要信息如下:
参数
date |
The date the object was published, in the site’s timezone. |
---|---|
date_gmt |
The date the object was published, as GMT. |
slug |
An alphanumeric identifier for the object unique to its type. |
status |
A named status for the object. One of: publish , future , draft , pending , private |
password |
A password to protect access to the content and excerpt. |
title |
The title for the object. |
content |
The content for the object. |
author |
The ID for the author of the object. |
excerpt |
The excerpt for the object. |
featured_media |
The ID of the featured media for the object. |
comment_status |
Whether or not comments are open on the object. One of: open , closed |
ping_status |
Whether or not the object can be pinged. One of: open , closed |
format |
The format for the object. One of: standard , aside , chat , gallery , link , image , quote , status , video , audio |
meta |
Meta fields. |
sticky |
Whether or not the object should be treated as sticky. |
template |
The theme file to use to display the object. One of:`` |
categories |
The terms assigned to the object in the category taxonomy. |
tags |
The terms assigned to the object in the post_tag taxonomy. |
POST /wp/v2/posts
意为要用post
方法提交到/wp/v2/posts
这个地址
默认是只读api
, 要实现提交数据需要安装插件jwt
,安装了jwt
后可以请求到token
了,然后在rest api
中传入token
信息,系统就不会拒绝你的发布文章的操作了
操作步骤
第一步 在
wordpress
管理后台安装JWT Auth
插件第二部 在网站根目录 .htaccess 文件中添加如下内容
1
2
3
4
5RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1在 wp-config.php 文件中添加如下内容:
1
2define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');//随便填写一个密码
define('JWT_AUTH_CORS_ENABLE', true);Post请求调用
http://{你的域名}/wp-json/jwt-auth/v1/token
接口获取token根据token进行文章的发布
核心代码如下:
1 | # -*- coding:utf-8 -*- |
使用wordpress_xmlrpc
第三方模块
操作步骤如下:
安装
wordpress_xmlrpc
1
pip install python-wordpress-xmlrpc
模块引入
1
2from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts,NewPost发布新文章
1
2
3
4
5
6
7
8
9
10
11
12
13
14def push_article(post_title,post_content_html):
post = WordPressPost()
post.title = post_title
post.slug = post_title
post.content = post_content_html
post.terms_names = {
'post_tag': post_title.split(" "),
'category': ["itarticle"]
}
post.post_status = 'publish'
wp.call(NewPost(post))
if __name__ == '__main__':
push_article("文章标题","文章内容")属性介绍:
- title: 文章标题
- content: 文章正文
- post_status: 文章状态,不写默认是草稿,private表示私密的,draft表示草稿,publish表示发布
- terms_names: 设置文章的标签 tag等
- slug: 文章别名
完整代码如下:
1 | # -*- coding:utf-8 -*- |
是不是很简单呢, 如果是批量上传的话, 直接一个循环调用即可
本文为作者原创 转载时请注明出处 谢谢
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站