我使用开放API使用其访问密钥获取波纹管信息:
HTTPConnectionPool(host='freeipapi.17mon.cn', port=80): Max retries exceeded with url: /183.11.178.118 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x103780780>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known',))
{'status': 0, 'address': 'CN|广东|深圳|None|CHINANET|0|0', 'content': {'address_detail': {'province': '广东省', 'city_code': 340, 'street': '', 'city': '深圳市', 'district': '', 'street_number': ''}, 'address': '广东省深圳市', 'point': {'x': '12693451.44', 'y': '2560682.35'}}}
你知道,后来的数据{'status': 0, 'address': 'CN|广东|深圳|None|CHINANET|0|0', 'content': {'address_detail': {'province': '广东省', 'city_code': 340, 'street': '', 'city': '深圳市', 'district': '', 'street_number': ''}, 'address': '广东省深圳市', 'point': {'x': '12693451.44', 'y': '2560682.35'}}}
是我的需要。
我怎样才能得到它?
代码如下:
import urllib, urllib.request
import json
ak_url="http://api.map.baidu.com/location/ip"
result = requests.get(ak_url,{"ip":"183.11.178.1","ak":BAIDU_IPADDR_AK})
print(result.json()) # There prints the upper data.
答案 0 :(得分:2)
您的数据实际上由result.json()
返回。
也许您对额外的HTTPConnectionPool
详细信息感到困惑。
这可能是result.json()
具有自定义表示形式的指示符(如,它实现__repr__
或__str__
)并在打印时将这些数据附加到幕后。
答案 1 :(得分:0)
使用请求。更容易。 pip install requests
然后:
import requests
ak_url="http://api.map.baidu.com/location/ip"
BAIDU_IPADDR_AK = 'test'
result = requests.get(ak_url,{"ip":"183.11.178.1","ak":BAIDU_IPADDR_AK})
print(result.json())
我得到了这个结果:
{'status': 200, 'message': 'APP不存在,AK有误请检查再重试'}