#!/usr/bin/env python # -*- coding: utf-8 -*- import xmlrpclib config = { 'url': 'http://www.cnblogs.com/russsellluo/services/metaweblog.aspx', 'appKey': 'russsellluo', 'user': 'russsellluo', 'passwd': 'xxx' } class MetaWeblog: def __init__(self, url, appKey, user, passwd): self.url, self.appKey, self.user, self.passwd = url, appKey, user, passwd self.proxy = xmlrpclib.ServerProxy(self.url) def getRecentPosts(self, blogid='', count=5): return self.proxy.metaWeblog.getRecentPosts(blogid, self.user, self.passwd, count) if __name__ == '__main__': weblog = MetaWeblog(**config) print weblog.getRecentPosts()
运行该脚本,会出错:
$ python test.py Traceback (most recent call last): File "test.py", line 23, in <module> print weblog.getRecentPosts() File "test.py", line 19, in getRecentPosts return self.proxy.metaWeblog.getRecentPosts(blogid, self.user, self.passwd, count) File "/usr/lib/python2.7/xmlrpclib.py", line 1224, in __call__ return self.__send(self.__name, args) File "/usr/lib/python2.7/xmlrpclib.py", line 1578, in __request verbose=self.__verbose File "/usr/lib/python2.7/xmlrpclib.py", line 1264, in request return self.single_request(host, handler, request_body, verbose) File "/usr/lib/python2.7/xmlrpclib.py", line 1297, in single_request return self.parse_response(response) File "/usr/lib/python2.7/xmlrpclib.py", line 1473, in parse_response return u.close() File "/usr/lib/python2.7/xmlrpclib.py", line 793, in close raise Fault(**self._stack[0]) xmlrpclib.Fault: <Fault 0: 'BlogConfig is null!'>
我参考过别人用Python访问博客园MetaWeblog的代码,感觉代码应该都没有问题,用户名和密码我也是填对了的,‘BlogConfig is null!'似乎是说博客园后台的配置有问题?该如何配置后台呢?(顺便说一下,在后台的“设置”中,我已经选择了“允许MetaWeblog博客客户端访问”,难道还有其他需要配置的地方?)
希望各位有遇到过类似问题的大牛们,能够指点一下;或者用上面的脚本测试下你们的博客主页,看是否是同样的问题,多谢!
从错误信息看,应该是url的问题,建议检查一下运行时url的值
多谢dudu老大快速、精准的回复:-)
url确实有问题,实际上config中的用户名都写错了(多敲了一个s),属于低级错误,更正如下:
config = { 'url': 'http://www.cnblogs.com/russellluo/services/metaweblog.aspx', 'appKey': 'russellluo', 'user': 'russellluo', 'passwd': 'xxx' }
修改后问题解决。