Json模块_指定IP地理位置的获取

Json模块

Json数据: JavaScript Object Notation, 一种轻量型数据交换格式, 便于阅读和交换数据。
Json常用方法:
使用 Json 函数需要导入 json 库:import json。

  • json.dumps 将 Python 对象编码成 JSON 字符串
  • json.loads 将已编码的 JSON 字符串解码为 Python 对象

方法:

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True,
           allow_nan=True, cls=None, indent=None,separators=None,
           encoding="utf-8", default=None, sort_keys=False, **kw)


json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None,
   		   parse_int=None, parse_constant=None, object_pairs_hook=None, **kw):

案例:

import json

# python对象编码成为json的数据格式
d = dict(a=1, b=2, c=3)
jsonDict = json.dumps(d)
print(jsonDict,type(jsonDict))

li = [1,2,3,4]
jsonLi = json.dumps(li)
print(jsonLi,type(jsonLi))

# python对象编码成为json格式,并保存到指定文件中
with open('doc/test.json','w') as f:
	# indent: 是否设置缩进; sort_keys: 是否对key值进行排序;
    # separators = {"每个元素之间的分隔符", “key和value值之间的分隔符”} 
    json.dump(d,f,indent=4,sort_keys=True,separators=(',',': '))
    
# json对象编码成为python的数据格式
pythonDict = json.loads(jsonDict)
print(pythonDict,type(pythonDict))

# 存储在json文件中的json对象编码成为python的数据格式
with open('doc/test.json') as f:
    pythonObj = json.load(f)
    print(pythonObj,type(pythonObj))

在这里插入图片描述
文件test.json中:
在这里插入图片描述
通过python获取指定ip的地理位置:
网上有很多API接口, 直接可以返回json格式的数据
根据IP查询所在地、运营商等信息的一些API如下(不一定都能用):
1. 淘宝的API(推荐):http://ip.taobao.com/service/getIpInfo.php?ip=110.84.0.129
2. 国外 freegeoip.net(推荐):http://freegeoip.net/json/110.84.0.129 这个还提供了经纬度信息
3. 新浪的API:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=110.84.0.129
4. 腾讯的网页查询(返回的非json格式): http://ip.qq.com/cgi-bin/searchip?searchip1=110.84.0.129
5. ip.cn的网页(返回的非json格式):http://www.ip.cn/index.php?ip=110.84.0.129
6. ip-api.comhttp://ip-api.com/json/110.84.0.129

上述的API接口,大多有一个特点是, 返回的直接是个json格式
代码:

import json
from urllib.request import urlopen

# 1. 简单的爬虫
url = 'http://ip-api.com/json/110.84.0.129'
urlObj = urlopen(url)

# 服务端返回的页面信息,此处为字符串类型
pageContent = urlObj.read().decode('utf-8')
print(pageContent)
print(type(pageContent))

# 2.处理json数据
# 将json数据格式解码为python可以识别的对象
dict_pageContent = json.loads(pageContent)
print(dict_pageContent)
print(type(dict_pageContent))

print("""
所在城市:%s
所在国家:%s
""" %(dict_pageContent['city'],dict_pageContent['country']))

在这里插入图片描述
在这里插入图片描述

urllib.request: urllib 的 request 模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值