获取HTTPConnectionPool数据

时间:2018-01-15 03:43:10

标签: python urllib

我使用开放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.

2 个答案:

答案 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有误请检查再重试'}