**
python获取不能直接得到的数据信息,以及对json数据的处理和提取(对post请求内容的处理)
**
前言:
环境:windows的python3.5
因为音频,视频数据都是不显示出来的数据,所以一开始决定,直接用phantom来获取数据的,但是后来发现,phantomjs通过与实际浏览器比较,可以发现css js图片的url都能截获到,但是对于vedio和audio加载的资源是无法获取到的
需要传送各种不同的编解码器。 ----不会传(估计是麻烦,有其他的更方便的方法,没有人写过类似的)
所以想要,嗯,,其他的selenium也使用了,估计可以使用,但是我不会。。。。。
所以最后决定使用抓包来分析json等等的数据先
但是发现有的json数据比较简单,很快就能获取到信息,而有一些就比较深了,套中套,于是又卡在这json数据的提取中了
嗯。。还有一点,我的这个json数据文件是一个post,不能直接通过地址来提取,所以就得自己提了
因为不能直接读取,所以我还把它复制出来单独成为一个json文件,读取来使用
下面是一些提取的方法,废话不多说
json.load() #用于从json文件中读取数据
从json文件中读取数据
with open("test_json.json", mode='r', encoding='utf-8') as fp:
load_dict = json.load(fp)
print("读取出的数据为:{}".format(load_dict))
#就是把json数据变成python可以编辑的数据
#取出该字典所有的值:
value_list = my_dict.values() #返回的是列表
在python2环境中这方法返回的是列表,但是在python3环境下返回的却是迭代器,要通过list()方法将其先转化为列表,再进行取值.相对应的是key
#自带方法
items()
#可以同时取出键与值
取值的时候因为每个值的类型不尽相同,所以有时候是可以取出值,有时候又报错了(类型不对)
后来才发现的
字典和集合都是无序的。
字典是键值对的集合,键值对之间是无序的;集合类型是无序的,其中的每一个元素都是唯一的,不存在相同的元素。
以下两张图片各不相同
确保有序
import json
import collections
with open(',,,.json',mode="r",encoding="utf-8") as fp: #,,,是json文件路径
load_dict=json.load(fp)
load_dict=sorted(load_dict.items()) #排序
load_dict=collections.OrderedDict(load_dict) #确定
#print(type(load_dict))
#print(len(load_dict))
value_list = load_dict.values()
listdata=list(value_list) #返回所有的值构成的列表
如下2图
还有一些比较快的方法可以提取,但是我刚开始没成功提出来,之后试试,这只适合于提层数少的,哈哈