json 是一种轻量级的数据交换格式, 也可以说是一种配置文件的格式
这种格式的文件是我们在数据处理经常会遇到的
python 提供内置的模块 json, 只需要在使用前导入即可
你可以通过帮助函数查看 json 的帮助文档
json 常用的方法有 load,loads,dump 以及 dumps, 这个都属于 python 初级, 我不做过多解释
json 可以结合数据库一起使用, 在这以后要处理大量数据时非常有用
下面我们正式来利用数据挖掘对 json 文件进行处理
现在很多网站都运用了 Ajax, 所以一般很多都是 XHR 文件
通过
这里我想利用一个地图网站来演示
我们通过浏览器的调试获取了相关 url
https://ditu.amap.com/service/poiInfo?id=B001B0IZY1&query_type=IDQ
下面我们通过 requests 模块中的 get 方法, 模拟浏览器发出的 http 请求, 并返回的到的结果对象
代码如下
- # coding=utf-8
- __Author__ = "susmote"
- import requests
- url = "https://ditu.amap.com/service/poiInfo?id=B001B0IZY1&query_type=IDQ"
- resp = requests.get(url)
- print(resp.text[0:200])
在终端中运行结果如下
数据已经获取到了, 但是为了接下来能使用这些数据, 我们需要利用 json 模块对这些数据进行分析
代码如下
- import requests
- import json
- url = "https://ditu.amap.com/service/poiInfo?id=B001B0IZY1&query_type=IDQ"
- resp = requests.get(url)
- json_dict = json.loads(resp.text)
- print(type(json_dict))
- print(json_dict.keys())
简单讲一下上面的代码:
导入 json 模块, 然后调用 loads 方法, 将返回的文本作为方法的参数传入
在终端中运行结果如下
可以看出, 转换的结果是与 json 字符串对应的字典, 因为 type(json_dict) 返回的是 < class 'dict'>
因为对象是一个字典, 所以我们可以调用字典的方法, 在这里我们调用的就是 keys 方法
结果返回三个键, 即 status,searcOpt,data
下面我们来查看 data 键里面的数据
- import requests
- import json
- url = "https://ditu.amap.com/service/poiInfo?id=B001B0IZY1&query_type=IDQ"
- resp = requests.get(url)
- json_dict = json.loads(resp.text)
- print(json_dict['data'])
下面在终端中运行这一段代码
可以看到里面有很多我们需要的数据, 如
不一一标出, 通过跟网页显示的相比较, 就能清楚哪些是有用的了
下面我们通过代码获取有用的信息, 把它清晰的输出
- # coding=utf-8
- __Author__ = "susmote"
- import requests
- import json
- url = "https://ditu.amap.com/service/poiInfo?id=B001B0IZY1&query_type=IDQ"
- resp = requests.get(url)
- json_dict = json.loads(resp.text)
- data_dict = json_dict['data']
- data_list = data_dict['poi_list']
- dis_data = data_list[0]
- print('城市:', dis_data['cityname'])
- print('名称:', dis_data['name'])
- print('电话:', dis_data['tel'])
- print('区号:', dis_data['areacode'])
- print('地址:', dis_data['address'])
- print('经度:', dis_data['longitude'])
- print('纬度:', dis_data['latitude'])
因为返回的是一个字典, 通过对文件结构的研究, 字典中嵌套着列表, 列表中又嵌套着字典, 通过层层解套, 成功获取数据
我这里把步骤分开列出了, 所以你会看的更加清楚
下面我们通过终端运行程序, 获取我们想要的信息
是不是非常简单了, 这个程序可以作为一个模版, 获取其他地方的信息时只需要改一个 url 即可
例如以下几个范例
北京大学
或者是腾讯大厦
数据挖掘是没有尽头的, 希望大家多分析数据, 找到你想要的数据
来源: https://www.cnblogs.com/susmote/p/8898476.html