- 44
- 0
import json
class TencentPipeline(object):
def __init__(self):
self.filename = open("tencent.json", 'w')
def process_item(self, item, spider):
text = json.dumps(dict(item),ensure_ascii = False) + "\n"
self.filename.write(str(text.encode("utf-8")))
return item
def close_spider(self, spider):
self.filename.close()
write 写入必须是str类型的,改为str了,但是读取的数据却全是编码。
在读取过程中 命令台显示的却是中文,而到文件里面却全是编码。
我不是转换了编码了吗?
没成功还是什么问题,求大佬指教。 0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
一晚八连杀 普通会员 1楼
在Scrapy中,管道(Pipeline)主要用于处理爬取的数据,如清洗、验证、存储等。如果你在使用
write()方法写入数据到文件时遇到编码问题,可能是因为直接将非UTF-8编码的文本写入了文件。Python3默认的字符串是Unicode字符串,但如果爬取的网页内容不是以UTF-8编码,则需要先将其转换为UTF-8编码再进行写入。
例如:
```python import scrapy
class MyPipeline: def process_item(self, item, spider): # 假设item['content']是从网页抓取的非UTF-8编码的内容 content = item['content'].decode('原始编码') # 将原始编码转换为Unicode content_utf8 = content.encode('utf-8') # 将Unicode转换为UTF-8编码
with open('output.txt', 'a', encoding='utf-8') as f: f.write(content_utf8) return item```
这里的'原始编码'需要你根据实际抓取网页的编码情况来替换,可以通过响应对象的
response.encoding属性获取(Scrapy在解析响应时会尝试猜测其编码,但并不一定总是准确)。另外,如果你确定所有抓取的内容都是同一种非UTF-8编码,也可以在Scrapy设置中全局指定:
```python
settings.py
FEED_EXPORT_ENCODING = '原始编码' ```
然后在管道中直接写入即可,Scrapy会自动处理编码转换。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
