首页 新闻 会员 周边 捐助

使用Python的xmlrpclib库访问博客园MetaWeblog出错

0
悬赏园豆:10 [已解决问题] 解决于 2013-10-08 14:03
#!/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博客客户端访问”,难道还有其他需要配置的地方?)

希望各位有遇到过类似问题的大牛们,能够指点一下;或者用上面的脚本测试下你们的博客主页,看是否是同样的问题,多谢!

RussellLuo的主页 RussellLuo | 菜鸟二级 | 园豆:201
提问于:2013-10-08 12:14
< >
分享
最佳答案
2

从错误信息看,应该是url的问题,建议检查一下运行时url的值

收获园豆:10
dudu | 高人七级 |园豆:31033 | 2013-10-08 13:32

多谢dudu老大快速、精准的回复:-)

url确实有问题,实际上config中的用户名都写错了(多敲了一个s),属于低级错误,更正如下:

config = { 
    'url': 'http://www.cnblogs.com/russellluo/services/metaweblog.aspx', 
    'appKey': 'russellluo', 
    'user': 'russellluo', 
    'passwd': 'xxx' 
}

修改后问题解决。

RussellLuo | 园豆:201 (菜鸟二级) | 2013-10-08 14:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册