TypeError: Object of type 'bytes' is not JSON serializable python3
TypeError: Object of type 'bytes' is not JSON serializable python3
我在 运行 我的蜘蛛之后收到了这个错误我也有一个管道,我把所有东西都转换成 JSON 但是在我的项目 return
之后仍然有这个错误
TypeError: Object of type 'bytes' is not JSON serializable
我的密码是
import json
import re
import types
SEPARATOR = '-'
FILING_PROPERTIES = ['state_id', 'types', 'description', 'filing_parties', 'filed_on']
DOCUMENT_PROPERTIES = ['types', 'title', 'blob_name', 'state_id', 'source_url']
class AeeiPipeline(object):
def process_item(self, item, spider):
import pdb
#
if item.get('title', None):
item['source_title'], item['title'] = self.title_case(item['title'])
if item.get('description'):
pdb.set_trace()
item['description'] = self.title_case(item['description'])
for filing in item.get("filings", []):
if filing.get('description'):
pdb.set_trace()
filing['description'] = self.title_case(filing['description'])
for _key in ["filing_parties", "types"]:
if not (_key in filing and filing[_key]):
filing[_key] = []
elif isinstance(filing[_key], str):
filing[_key] = [filing[_key]]
for doc in filing.get("documents", []):
if doc.get('name'):
doc['name'] = doc['name']
if doc.get('title'):
doc['title'] = self.make_unicode(doc['title'])
if "types" in doc and not type(doc["types"]) is list:
doc["types"] = [doc["types"]]
for _key in ["industries", "assignees", "major_parties", "source_assignees", "source_major_parties"]:
if not (_key in item and item[_key]):
item[_key] = []
elif isinstance(item[_key], str):
item[_key] = [item[_key]]
for key, value in item.items():
if type(item[key]) is str:
item[key] = value.strip()
pdb.set_trace()
item = json.dumps(item) + '\n'
return item
def title_case(self, title):
title = self.make_unicode(title)
return title, re.sub(u"[A-Za-z]+(('|\u2019)[A-Za-z]+)?",
lambda mo: mo.group(0)[0].upper() + mo.group(0)[1:].lower(),
title)
TypeError: Object of type 'PucItem' is not JSON serializable
这意味着你正在使用Scrapy的项目class
解决方案是要么这样做
item = json.dumps(dict(item))
或者在你的 Spider 中,不要使用 Item class 来创建项目,只需使用像 item = {}
这样的字典
我在 运行 我的蜘蛛之后收到了这个错误我也有一个管道,我把所有东西都转换成 JSON 但是在我的项目 return
之后仍然有这个错误TypeError: Object of type 'bytes' is not JSON serializable
我的密码是
import json
import re
import types
SEPARATOR = '-'
FILING_PROPERTIES = ['state_id', 'types', 'description', 'filing_parties', 'filed_on']
DOCUMENT_PROPERTIES = ['types', 'title', 'blob_name', 'state_id', 'source_url']
class AeeiPipeline(object):
def process_item(self, item, spider):
import pdb
#
if item.get('title', None):
item['source_title'], item['title'] = self.title_case(item['title'])
if item.get('description'):
pdb.set_trace()
item['description'] = self.title_case(item['description'])
for filing in item.get("filings", []):
if filing.get('description'):
pdb.set_trace()
filing['description'] = self.title_case(filing['description'])
for _key in ["filing_parties", "types"]:
if not (_key in filing and filing[_key]):
filing[_key] = []
elif isinstance(filing[_key], str):
filing[_key] = [filing[_key]]
for doc in filing.get("documents", []):
if doc.get('name'):
doc['name'] = doc['name']
if doc.get('title'):
doc['title'] = self.make_unicode(doc['title'])
if "types" in doc and not type(doc["types"]) is list:
doc["types"] = [doc["types"]]
for _key in ["industries", "assignees", "major_parties", "source_assignees", "source_major_parties"]:
if not (_key in item and item[_key]):
item[_key] = []
elif isinstance(item[_key], str):
item[_key] = [item[_key]]
for key, value in item.items():
if type(item[key]) is str:
item[key] = value.strip()
pdb.set_trace()
item = json.dumps(item) + '\n'
return item
def title_case(self, title):
title = self.make_unicode(title)
return title, re.sub(u"[A-Za-z]+(('|\u2019)[A-Za-z]+)?",
lambda mo: mo.group(0)[0].upper() + mo.group(0)[1:].lower(),
title)
TypeError: Object of type 'PucItem' is not JSON serializable
这意味着你正在使用Scrapy的项目class
解决方案是要么这样做
item = json.dumps(dict(item))
或者在你的 Spider 中,不要使用 Item class 来创建项目,只需使用像 item = {}