生命不止,折腾不停,最近开始接触了wordpress,发现wordpress真的做得很不错,有很多地方值得学习,很多地方也设置得非常巧妙。在刚安装完了wp后就会有一篇“世界你好”的文章,有点空荡荡,所以我在想可不可用python为wordpress采集一些内容再自动发布上去呢,那么话不多说,让我们开干吧
一、所需库与模块
requests 是一个模拟http请求的库,我们用它来爬取网页。
lxml 是一个解析HTML与XML的库,我们用它来解析网页内容
pymysql 是一个操作MySql的库,我们用它来上传内容到wordpress的数据库
time 是python内置的一个处理时间的模块,我们用它来设置爬取网页的间隔时间
random 是一个python内置的生成随机数的模块,我们用它来生成随机的间隔时间
xpinyin 是一个将汉字转换成拼音的库
二、使用pymysql提交内容到wordpress数据库
一般我们在使用wordpress时都是在后台上面写完然后点击发布,这个过程是这样子的:
浏览器=>form提交=>php=>数据库
而这里我们要跳过前面三个步骤,直接对接数据库:
命令行=>数据库
在通过查看wordpress数据库的wp_posts表的字段后,我写了一段sql语句,并预留了三个位置,为content,title,name,分别代表文章内容,标题,在url显示的名字。
sqlbase="INSERT INTO wp_posts(post_author,post_date,post_date_gmt,post_content,post_title,post_status,comment_status,ping_status,post_name,post_modified,post_modified_gmt,post_parent,menu_order,post_type) VALUE(1,now(),DATE_ADD(now(),INTERVAL '-8' HOUR),'%s','%s','publish','open','open','%s',now(),DATE_ADD(now(),INTERVAL '-8' HOUR),0,0,'post')"
我们要生成一段插入文章的sql语句时就可以这样写
sql=sqlbase % (content,title,name)
接下来要将sql语句提交到wordpress的数据库,这里就需要用到一个python的第三方库pymysql
import pymsql
sqlbase="INSERT INTO wp_posts(post_author,post_date,post_date_gmt,post_content,post_title,post_status,comment_status,ping_status,post_name,post_modified,post_modifi