安装
python -m pip install python-wordpress-xmlrpc
使用:
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo
#登录
wp = Client('http://mysite.wordpress.com/xmlrpc.php', 'username', 'password')
#获取最新发布的10条信息标题:使用for循环打印
wp.call(GetPosts())
[<WordPressPost: hello-world (id=1)>]
#获取用户信息
wp.call(GetUserInfo())
#发布
post = WordPressPost()
post.title = 'My new title'
post.content = 'This is the body of my new post.'
post.terms_names = {
'post_tag': ['test', 'firstpost'],
'category': ['Introductions', 'Tests']
}
wp.call(NewPost(post))
效果图:
成功入库:
遇到的问题:
(1)目标站采用markdown,需要将格式进行html转换:
(2)采集下载目标站图片需要判断<img>标签中src是源站还是第三方站
(3)入库html代码中img的src属性地址,与下载图片路径配套
(3)python-wordpress-xmlrpc模块可以传递标签,本想通过分词分析内容及标题,但始终麻烦,所幸wp有一款插件支持在文章入库时自动获取标签,省去一大麻烦
post.terms_names = {
‘post_tag’: tags,
‘category’: [category]
}
(4)在linux下,报错:
AttributeError: ‘module’ object has no attribute ‘_create_unverified_context
原先python中为:
_create_unverified_https_context = ssl._create_unverified_context
修改为如下后正常:
try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
pass
else:
ssl._create_default_https_context = _create_unverified_https_context
(5)linux下记得安装pillow模块
pip intsall pillow
注意:
wordpress开启xmlrpc模块存在一定安全隐患,如暴力破解、SSRF,参考https://blog.csdn.net/u012206617/article/details/109002948
(https://github.com/FireFart/WordpressPingbackPortScanner)
开启xmlrpx模块,可能被恶意Ddos导致内存使用增高,影响站点使用,解决:
1.屏蔽 XML-RPC (pingback) 的功能,add_filter(‘xmlrpc_enabled’, ‘__return_false’);
2.通过.htaccess屏蔽xmlrpc.php文件的访问;
3.修改.htaccess文件,如果有用户访问xmlrpc.php文件,让其跳转到其他不存在的页面,降低自身网站的负担。
4.修改xmlrpx文件名;
修改文件名可保证该功能的使用,又避免了以上问题,除非又被人扫描到了。。。