python-wordpress-xmlrpc在python.8+出错
最近有个项目,需要批量抓取信息,存入wordpress数据库,用到了python-wordpress-xmlrpc模块,因为很早之前用过,感觉还不错,结果悲剧了.上来就报错:
from wordpress_xmlrpc import Client, methods
from wordpress_xmlrpc.methods.posts import GetPosts
#wordpress信息
url = 'http://localhost/wp611/xmlrpc.php'
user = 'admin'
password = 'admin'
client = Client(url, user, password)
posts = client.call(GetPosts())
错误信息如下:
Traceback (most recent call last):
File "E:\Pyroot\wp\main.py", line 11, in <module>
posts = client.call(GetPosts())
File "E:\Pyroot\wp\venv\lib\site-packages\wordpress_xmlrpc\base.py", line 46, in call
return method.process_result(raw_result)
File "E:\Pyroot\wp\venv\lib\site-packages\wordpress_xmlrpc\base.py", line 128, in process_result
elif isinstance(raw_result, collections.Iterable):
AttributeError: module 'collections' has no attribute 'Iterable'
一头雾水,不过已经有大神在此之前就遇到了这个问题,还帮我写了解决方案:
from wordpress_xmlrpc.base import XmlrpcMethod
from wordpress_xmlrpc.compat import xmlrpc_client, dict_type
import collections.abc
#创建新的my_process_result,替换掉原来的my_process_result
def my_process_result(self, raw_result):
if self.results_class and raw_result:
if isinstance(raw_result, dict_type):
return self.results_class(raw_result)
elif isinstance(raw_result, collections.abc.Iterable):
return [self.results_class(result) for result in raw_result]
return raw_result
XmlrpcMethod.process_result = my_process_result
参考原文:https://qiita.com/yamayamato_4989/items/b9541e327d8cbb109e26
发表回复