文章前言
前段时间,这么说应该是去年,想利用树莓派做个爬虫服务器,然后发布到WordPress上,搜索找到eqblog
博客上有个Python3下WordPress 数据库发布文章的类,所以试了一下非常不错,做个记录,有需要的可以试试看。
这个代码只使用在Python3上,在使用之前需要安装PyMsql
库:
pip3 install PyMySQL
WordPress 的文章在写入数据库时需要以下字段:
- ID:文章的唯一标识符,自动生成;
- post_author:文章的作者 ID;
- post_date:文章的创建时间;
- post_date_gmt:文章的创建时间(GMT 时间);
- post_content:文章的正文内容;
- post_title:文章的标题;
- post_excerpt:文章的摘要;
- post_status:文章的状态,如 draft(草稿)、publish(发布)等;
- comment_status:评论状态,如 open(开启)、closed(关闭)等;
- ping_status: Pingback/Trackback 状态,如 open(开启)、closed(关闭)等;
- post_password:文章的密码;
- post_name:文章的 slug,即文章的网址中的一部分;
- to_ping:需要 Ping 的 URL;
- pinged:已经 Ping 的 URL;
- post_modified:文章的最后修改时间;
- post_modified_gmt:文章的最后修改时间(GMT 时间);
- post_content_filtered:已经过滤的文章正文内容;
- post_parent:文章的父级 ID;
- guid:文章的全局唯一标识符;
- menu_order:文章在菜单中的顺序;
- post_type:文章类型,如 post(文章)、page(页面)等;
- post_mime_type:文章的 MIME 类型;
- comment_count:评论数量。
其中,post_author、post_content、post_title、post_status、post_name、post_type 是必填字段,其他字段可以为空或者自动生成。同时,如果需要将文章分配到某个分类或标签中,还需要在另外的表中插入相应的数据。具体可以参考之前提供的 WordPressWriter 类的代码实现。
代码部分
class wordpress_post:
def __init__(self,tittle,content):
self.tittle=tittle
self.content=content
def mysql_con(self):
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='pwd', db='wordpress', charset='utf8') #将这里换为你的数据库地址
return conn
def up(self):
times=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
sql="INSERT INTO wp_posts(post_author,post_date,post_content,post_title,post_excerpt,post_status,comment_status,ping_status,post_name,to_ping,pinged,post_modified,post_content_filtered,post_parent,menu_order,post_type,comment_count) VALUES ('1','%s','%s','%s','','publish','open','open','%s','','','%s','','0','0','post','0')" % (str(times),str(self.content),str(self.tittle),str(self.tittle),str(times))
return sql
def cat(self,ids,cat):
sql="INSERT INTO wp_term_relationships(object_id,term_taxonomy_id,term_order) VALUES (%s,%s,'0')"%(ids,cat)
return sql
def close_mysql(self,cursor,conn):
conn.commit()
cursor.close()
conn.close()
[tip type="tip success" ]
记得上面代码的conn
变量中设置你的数据库地址和用户名密码
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='pwd', db='wordpress', charset='utf8') #将这里换为你的数据库地址
使用方法
a=wordpress_post(str(t),wz_content) #这里第一个参数是标题 第二个是文章内容
conn=a.mysql_con()
cursor = conn.cursor()
c=a.up()
effect_row = cursor.execute(c)
new_id = cursor.lastrowid #这里是记录文章id以便设置文章的分类
d=a.cat(new_id,'1')
effect_row = cursor.execute(d)
a.close_mysql(cursor,conn)
其实自己可以结合上面的代码利用多线程做个爬虫是非常方便的。
不错不错,可以拿来做爬虫了。