WordPress自动抓取发布文章

Posted by jjx on September 15, 2016

很多用WordPress建站的朋友都有这样的苦恼,网站建好了,没有时间自己写文章,慢慢就荒废了,还有的朋友在浏览器收集好多喜欢的博客网站地址,因为收集的网址太多太杂,从此也很少点开看。其实只要几行代码我们就可以完全利用Python和WordPress建一个属于自己的文章抓取站点。主要是运用python newspaper xmlrpc 模块编写实现网页爬虫,通过正则匹配爬取网页内容后,用xmlrpc自动发布到WordPress部署的网站。然后采用crond定时抓取。

  • python抓取URL
  • newspaper解析页面
  • xmlrpc上传到wordpress
#/usr/bin/env python
#coding=utf8
import httplib
import hashlib
import urllib
import random
import urllib2
import md5
import re
import json
import sys
import time
from lxml import html
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import NewPost
from newspaper import Article
reload(sys)
sys.setdefaultencoding('utf-8')
time1 = time.time()
#得到html的源码
def gethtml(url1):
    #伪装浏览器头部
    headers = {
       'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'
    }
    req = urllib2.Request(
    url = url1,
    headers = headers
    )
    html = urllib2.urlopen(req).read()
    return html
#得到目标url源码
code1 = gethtml('http://whuhan2013.github.io/archive/')

tree = html.fromstring(code1)
#print tree

targeturl=tree.xpath("//li[@class='listing-item']/a/@href")

def sends():
    # print targeturl
    for i in range(len(targeturl)):
        #u=content1[i][0]
        url="http://whuhan2013.github.io"+targeturl[i]
        print url
        a=Article(url,language='zh')
        a.download()
        a.parse()
        #print a.text
        dst=a.text
        tag='test'
        title=a.title
        #print 'here2'
   
        #链接WordPress,输入xmlrpc链接,后台账号密码
        wp = Client('http://119.29.152.242/wordpress/xmlrpc.php','Ricardo','286840jjx')
		#示例:wp = Client('http://www.python-cn.com/xmlrpc.php','username','password')
        post = WordPressPost()
        post.title = title
        # post.post_type='test'        
        post.content = dst
        post.post_status = 'publish'
        #发送到WordPress
        #print 'here3'
        wp.call(NewPost(post))
        time.sleep(3)
        print 'posts updates'

if __name__=='__main__':
    sends()
    f1.close()

最后,可以通过crontab定时运行程序,采集指定文章发送到WordPress

参考链接:运用Python实现WordPress网站大规模自动化发布文章

源码:wordpress自动发布

访问:良有以也的博客

wordpress支持Markdown与代码高亮,丰富文章样式,文章访问量插件等

给力星的博客插件

效果如下