def insert(key, url, src):
fname = Util.combine(Request.getFilePath(), "query.xml")
rs = Crawl.parse(fname, src["body"])
if not rs or not rs["data"]:
print(json.dumps({"errmsg": "parse error!", "url": url}, ensure_ascii=False).decode("utf-8"))
else:
doc = {"data": str(Json.dumps(rs["data"][0]))}
if rs["data"][0]["codel"] != "":
kdb.insert("query", key, doc)
f = open(r'd:/abc.txt','a')
f.write('\n' + str(Json.dumps(rs["data"][0])))
f.close()
print(json.dumps(Json.loads(doc["data"]), ensure_ascii=False).decode("utf-8"))
我从自己一个utf8的爬虫程序里面摘的。
程序开头:
#!/usr/bin/env python后面做抓取程序的时候全部加上decode和encode。
在输入到txt的时候相应的分隔符也要decode和encode:
f.write(info+'!'.decode("utf-8").encode(type0))希望能帮到你。
追问还是不成报错
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xfd in position 0: invalid start byte
你可能截取的片段不是utf8编码。打个比方我这里有一个utf8的string,编码是abcdefg,这个string的名字是s, 那么s确实是个utf8编码,可以被解读,但是s[0:2]程序就不能被程序理解为utf8了。
本回答被提问者和网友采纳