最新消息:就位生活服务网,12年专注于提供本地优质的生活服务企业,涵盖保洁服务、甲醛治理、物业、搬家、空调维修等多个生活服务领域。

用python程序自动更新wordpress网站文章

用python程序自动更新wordpress网站文章

仅需200多行代码,网站变成机器人儿。用wordpress搭建的网站可以用程序控制完成自动采集信息,并自动上传更新。如果外部条件不变化(比如数据来源),理论上wordpress制作的网站可以在无人值守的状态下一直自转下去。程序用python写成,需要安装第三方包wordpress_xmlrpc。

以下是我们为某网站定制的自更新程序代码,仅是数据上传部分。供参考.

#coding:utf-8 本程序实现在http://www.okinawa-newlife.com网站自动发帖,别的wordpress网站可套用。
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from wordpress_xmlrpc.methods import posts
from wordpress_xmlrpc.methods import taxonomies
from wordpress_xmlrpc import WordPressTerm
from wordpress_xmlrpc.compat import xmlrpc_client
from wordpress_xmlrpc.methods import media, posts
import sys
import os

def picksn(): # 查找本地编号文件,
# 本函数取得所有待处理房产编号,和已处理房产编号 作为list返回给调用函数。没有返回空
global path
wfname = path + ‘房产编号.txt’ #未处理的房产编号
yfname = path + ‘房产编号已传.txt’ #已处理的房产编号
if not os.path.isfile(wfname): # 判断本地是否存在文件是否存在,不存在就退出
print(“房产编号文件不存在。”)
wlist = [“”]
else:
with open(wfname, ‘r’,encoding=’utf-8′) as wfile: # 从文件读,如文中有汉字,encoding 参数必须有,否则报错 UnicodeDecodeError。。。
wlist = wfile.readlines() # 整个文件读出放到列表中
if not os.path.isfile(yfname): # 判断本地是否存在已处理编号的文件
ylist = [“”]
else:
with open(yfname, ‘r’, encoding=’utf-8′) as yfile: # 从文件读,如文中有汉字,encoding 参数必须有,否则报错 UnicodeDecodeError。。。
ylist = yfile.readlines() # 整个文件读出放到列表中
sns = [wlist[0],ylist[0]] #把待处理编号和已处理编号都返回给调用函数
return sns

def sendpost(sn):
para = getinfo(sn)
wp = Client(‘http://www.okinawa-newlife.com/xmlrpc.php’, ‘用户名’, ‘密码’)
post = WordPressPost()
post.title = para[0]
post.content = para[1]+para[2]+para[3]+para[4]+para[5]+para[6]
post.post_status = ‘publish’ #文章状态,不写默认是草稿,private表示私密的,draft表示草稿,publish表示发布
post.terms_names = {
‘post_tag’: [‘冲绳房产’, ‘日本房产’,’冲绳投资’,para[1]], #文章所属标签,没有则自动创建
‘category’: [‘冲绳房产’,para[1] ] #文章所属分类,没有则自动创建
}

# 以下代码添加特色图像
imgfname = path+sn+’.jpg’ # 上传的图片文件路径
if os.path.isfile(imgfname): # 判断文件名是否存在,有才上传图片
# prepare metadata
data = {
‘name’: ‘picture.jpg’,
‘type’: ‘image/jpeg’, # mimetype
}
# read the binary file and let the XMLRPC library encode it into base64
with open(imgfname, ‘rb’) as img:
data[‘bits’] = xmlrpc_client.Binary(img.read())
response = wp.call(media.UploadFile(data))
attachment_id = response[‘id’]
post.thumbnail = attachment_id # 缩略图的id

post.id = wp.call(posts.NewPost(post))
print(sn+”号物业已上传”)

def getinfo(sn):
# 按编号从之前保存的本地文件读取信息
#para= [] # 保存参数的list
filename = path+sn+’-有用信息.txt’
with open(filename, ‘r’, encoding=’utf-8′) as f: # 从文件读,如文中有汉字,encoding 参数必须有,否则报错 UnicodeDecodeError。。。
para = f.readlines() # 整个文件读出放到列表中
return para
#sns = filestr.split(“,”) # str转为list, 逗号分隔

#程序起点在此
path = r’C:\20200714\房产素材\\’ # 指定一个保存文件的文件夹
sns = picksn() # 获取编号列表,sns是嵌套list,他的值一个是待处理编号的list, 一个是已处理编号的list
wsns = sns[0].split(‘,’) #待处理编号list
ysns = sns[1].split(‘,’) #已处理编号list
#wsns = [‘42779′,’42708’]
#ysns = [“”]
nsns = [“”] #本次程序执行处理的编号list
yfname = path + ‘房产编号已传.txt’ #保存已上传编号的文件名
for i in wsns: #把待处理编号中的值逐个处理
if i not in ysns: #判断下是否在已处理编号中,没有才继续下边的post程序
# ctn = input(“将要上传”+i+”,继续按回车,按n退出程序”) #人工干预是否继续,按回车值为空,继续
# if ctn == ”:
filename = path+i+’-有用信息.txt’
if os.path.isfile(filename): # 判断文件名是否存在,如不存在就处理下一个编号
sendpost(i)
# 把更新过的编号做个记录,保存本地文件中,避免重复更新
with open(yfname, ‘a’, encoding=’utf-8′) as f:
f.write(“,”+i)
# else:
# sys.exit() #退出程序

print(“上传完成!”)

转载请注明:本地生活服务推介平台 » 用python程序自动更新wordpress网站文章