爬虫技术:数据处理josn和pickle模块
一:json模块
json模块的作用就是讲json字符串("{"a":1,"b":1}")和python能够识别的字典进行相互转换。
import json
import pickle
a = """
{'a'::1,
'c':2}
""" ret = json.loads(a)
print(ret) # 结果
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 2 (char 2) a不是标准的json字符串,标准的字符串必须使用双引号进行包裹,这点非常重要。 a = """
{"a":1,
"c":2}
""" ret = json.loads(a)
print(ret) print(ret["a"]) # 结果
{'a': 1, 'c': 2}
1
结论:loads: josn字符串---->和python字典之间的转换
import json
import pickle
a = {'a':1,'b':2} ret = json.dumps(a) # 将pyhton字典转换为josn字符串,这种情况下对于引号的限制没有那么严格
print(ret) print(type(ret)) {"a": 1, "b": 2}
<class 'str'>
二:picke模块:将字节和python对象之间进行转换
import pickle
a = {'a':1,'b':2} b = "哈哈" c = 1 d = [1,2,3] ret1 = pickle.dumps(a) print(ret1) # b'\x80\x03}q\x00(X\x01\x00\x00\x00aq\x01K\x01X\x01\x00\x00\x00bq\x02K\x02u.' ret2 = pickle.dumps(b) print(ret2) # b'\x80\x03X\x06\x00\x00\x00\xe5\x93\x88\xe5\x93\x88q\x00.' ret3 = pickle.dumps(c) print(ret3) # b'\x80\x03K\x01.' ret4 = pickle.dumps(d) print(ret4) # b'\x80\x03]q\x00(K\x01K\x02K\x03e.' with open("demo.txt","wb") as f:
f.write(ret1)这种情况,就要看ret1的编码格式是什么,python中提供了chardet模块来检查编码格式
import chardet
print(chardet.detect(ret1))
# 结果
{'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}![]()
import pickle
import chardet
a = {'a':1,'b':2}
d = [1,2,3]
f = open("test.txt","wb")
pickle.dump(d,f) # 不同于dumps返回一个二进制的结果,dump直接将文件写入指定位置
f.close()
import pickle
import chardet
a = {'a':1,'b':2} d = [1,2,3] ret = pickle.dumps(d) print(ret) # b'\x80\x03]q\x00(K\x01K\x02K\x03e.' ret1 = pickle.loads(ret) # pickle必须接收的是picke自己dumps的二进制类型文件 print(ret1) # [1, 2, 3]
import pickle
import chardet
a = "" ret = a.encode("utf-8")
print(ret) ret1 = pickle.loads(ret) # loads的数据,必须是dumps自己处理过的类型才行
print(ret1) # 结果
_pickle.UnpicklingError: could not find MARK
import pickle
import chardet
a = "" ret = a.encode("Windows-1252")
print(ret) ret1 = pickle.loads(ret)
print(ret1)
# 结果
_pickle.UnpicklingError: could not find MARK
laod方法
import pickle
import chardet with open("demo.txt","rb") as f:
ret = pickle.load(f)
print(ret) # 结果
{'a': 1, 'b': 2}
# 如何将多个字典存入txt文件中,并且将文件的内容转换成excel形式呢?
import json
item1 = {"a":1}
item2 = {"b":1}
item3 = {"c":1}
item4 = {"d":1} ret = {"data":[item1,item2,item3,item4]} # 存的时候
demo = json.dumps(ret)
print(type(demo))
# with open("demo.txt","w") as f:
# f.write(demo) # 取得时候
with open("demo.txt","r") as f:
data = f.read()
data1 = json.loads(data) print(data1) print(data1["data"]) info_list = data1["data"] for i in info_list:
print(type(i))
爬虫技术:数据处理josn和pickle模块的更多相关文章
- python学习_应用pickle模块封装和拆封数据对象
学习文件数据处理的时候了解到有pickle模块,查找官方文档学习了一些需要用到的pickle内容. 封装是一个将Python数据对象转化为字节流的过程,拆封是封装的逆操作,将字节文件或字节对象中的字节 ...
- .net 爬虫技术
关于爬虫 从搜索引擎开始,爬虫应该就出现了,爬的对象当然也就是网页URL,在很长一段时间内,爬虫所做的事情就是分析URL.下载WebServer返回的HTML.分析HTML内容.构建HTTP请求的模拟 ...
- 使用webcollector爬虫技术获取网易云音乐全部歌曲
最近在知乎上看到一个话题,说使用爬虫技术获取网易云音乐上的歌曲,甚至还包括付费的歌曲,哥瞬间心动了,这年头,好听的流行音乐或者经典老歌都开始收费了,只能听不能下载,着实很郁闷,现在机会来了,于是开始研 ...
- 使用htmlparse爬虫技术爬取电影网页的全部下载链接
昨天,我们利用webcollector爬虫技术爬取了网易云音乐17万多首歌曲,而且还包括付费的在内,如果时间允许的话,可以获取更多的音乐下来,当然,也有小伙伴留言说这样会降低国人的知识产权保护意识,诚 ...
- Pythoy 数据类型序列化——json&pickle 模块
Pythoy 数据类型序列化--json&pickle 模块 TOC 什么是序列化/反序列化 pickle 模块 json 模块 对比json和pickle json.tool 命令行接口 什 ...
- 洗礼灵魂,修炼python(70)--爬虫篇—补充知识:json模块
在前面的某一篇中,说完了pickle,但我相信好多朋友都不懂到底有什么用,那么到了爬虫篇,它就大有用处了,而和pickle很相似的就是JSON模块 JSON 1.简介 1)JSON(JavaScrip ...
- python 常用模块(一): os模块,序列化模块(json模块 pickle模块 )
1.os模块 2.序列化模块:(1)json模块 和 pickle模块 一.os模块 os.path.abspath: (1)把路径中不符合规范的/改成操作系统默认的格式 import os path ...
- python(31)——【sys模块】【json模块 & pickle模块】
一.sys模块 import sys sys.argv #命令行参数List,第一个元素是程序本身路径 sys.exit() #退出程序,正常退出时exit(0) sys.version #获取pyt ...
- [转]python pickle模块
持久性就是指保持对象,甚至在多次执行同一程序之间也保持对象.通过本文,您会对 Python对象的各种持久性机制(从关系数据库到 Python 的 pickle以及其它机制)有一个总体认识.另外,还会让 ...
随机推荐
- 剑指 Offer——最小的 K 个数
1. 题目 2. 解答 2.1. 方法一--大顶堆 参考 堆和堆排序 以及 堆的应用,我们将数组的前 K 个位置当作一个大顶堆. 首先建堆,也即对堆中 [0, (K-2)/2] 的节点从上往下进行堆化 ...
- Vue知识整理4:v-html标签
可以在数据绑定中使用html标签,这样在变量里可以使用html标签输出结果,如下所示:
- 在静态页面中使用 Vue.js
在静态页面中使用 Vue.js 不使用Node.js, NPM, Webpack 等, 在静态页中使用Vue.js. 包括路由, 单文件组件. 1. 创建index.html index.html做为 ...
- http://blog.csdn.net/sdksdk0/article/details/50749326
http://blog.csdn.net/sdksdk0/article/details/50749326
- IntelliJ IDEA的常用设置
1.设置IDEA主题样式 ①设置方法: ②效果:设置为Darcula之后整体的风格就是暗黑主题,如上图. 2.设置编辑区主题 ①设置方法: 注:由于IDEA自带的编辑区主题比较少,想要更多的编辑区主题 ...
- 基于3ds Max的游戏建模方案
前言 需求 由于本游戏的设计,需求使用到角色以及场景建模.具体模型的搭建与贴图的设计根据原画进行. 工具 一般在游戏研发中,模型的搭建主要使用以下工具和概念来渲染建模. 3ds Max 3ds Max ...
- TensorFlow学习笔记5-概率与信息论
TensorFlow学习笔记5-概率与信息论 本笔记内容为"概率与信息论的基础知识".内容主要参考<Deep Learning>中文版. \(X\)表示训练集的设计矩阵 ...
- 应用安全-web安全-WebShell整理
shellcode.aspx <%@ Page Language="C#" AutoEventWireup="true" Inherits="S ...
- 如何选择适合自己的Linux版本
如何选择适合自己的Linux版本: 1.Linux桌面系统,首选Ubuntu; 2.服务器端的Linux系统,首选RHEL或CentOS,这两种中首选CentOS,如果公司有钱,不在乎成本也可以选择R ...
- MYSQL实战-1.mysql基本架构
1.mysql可分为server层和存储引擎 1.1 server层: 连接器.查询缓存.分析器.优化器 .执行器.包含所有内置函数(日期,时间,数学.加密函数),所有跨存储引擎的功能都在此层,比如存 ...
这种情况,就要看ret1的编码格式是什么,python中提供了chardet模块来检查编码格式