我在写一个python的网络爬虫,写入记事本的内容都是乱码如何使写入的数据以utf8或者gb2312的码制写入。

definsert(key,url,src):fname=Util.combine(Request.getFilePath(),"query.xml")rs=Crawl.... 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"))
展开
 我来答
Kontenance
2016-08-29 · TA获得超过125个赞
知道小有建树答主
回答量:97
采纳率:0%
帮助的人:102万
展开全部

我从自己一个utf8的爬虫程序里面摘的。

程序开头:

#!/usr/bin/env python
# -*- coding:utf8 -*-
import urllib
import urllib2
import string
import re
import sys
type0 = sys.getfilesystemencoding() #解决中文乱码问题


后面做抓取程序的时候全部加上decode和encode。

pos1 = text.find(term.decode("utf-8").encode(type0))


在输入到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了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
数阔八爪鱼采集器丨RPA机器人
2023-08-11 · 前往八爪鱼RPA应用市场,免费获取机器人
数阔八爪鱼采集器丨RPA机器人
向TA提问
展开全部
八爪鱼采集器是一款功能全面、操作简单、适用范围广泛的互联网数据采集器。如果您需要采集数据,八爪鱼采集器可以为您提供智能识别和灵活的自定义采集规则设置,帮助您快速获取所需的数据。了解更多八爪鱼采集器的功能与合作案例,请前往官网了解更多详情
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式